7

当我将CheckBox 控件的isChecked属性bool作为控件放置在用户控件或窗口上时,我可以将其获取到属性。但是,如果我将它放在工具栏中,它甚至不可见,除了可能是薄的左边缘或右边缘(但绑定仍然有效)。如果我放入一个 ContextMenu,它会显示为选中或未选中,但绑定目标不受影响。

这是 Window.Resources 中的 ContextMenu 定义:

<ContextMenu x:Key="ContentMenu" DataContext="{Binding MyView}">
  <CheckBox IsChecked="{Binding Path=IsRed}"/>
</ContextMenu>

这是包含 CheckBox 和带有 CheckBox 的 ToolBar 的 StackPanel:

<StackPanel Height="20" Orientation="Horizontal" DockPanel.Dock="Top" DataContext="{Binding MyView}">
    <CheckBox IsChecked="{Binding Path=IsRed}"/>

 <ToolBar Margin="10,0,0,0">
<CheckBox Width="18" Height="18" IsChecked="{Binding Path=IsRed}"/>
 </ToolBar>
 </StackPanel>

我只想问

1)如果有人可以建议工具栏问题的解决方案(也许是不同的模板?),

2)定义上下文菜单的正确方法DataContext(这似乎是实际问题)。

4

1 回答 1

14

我明白你的意思,复选框现在看起来像一个切换按钮。如果您查看工具栏的控件模板,您会看到它调整了某些类型的子控件的控件模板。

如果你愿意的话,有一个技巧或错误,如果你把 Checkbox 放在一些布局容器中,如 Stackpanel、Grid 等,那么它的 controltemplate 不会被调整:

<ToolBar>
  <Grid><CheckBox IsChecked="True" VerticalAlignment="Center">Test</CheckBox></Grid>
</ToolBar>
于 2012-11-29T13:09:35.097 回答