CheckBox在工具栏中或作为控件的行为差异

时间:2012-11-29 12:15:38

标签: wpf binding checkbox contextmenu toolbar

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

这是Window.Resources中的ContextMenu定义:

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

这是包含CheckBox和带有CheckBox的工具栏的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的正确方法(这似乎是实际问题)。

1 个答案:

答案 0 :(得分:9)

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

如果您将Checkbox放在某些布局容器(如Stackpanel,Grid等)中,那么有一个技巧或错误,那么它的controltemplate不会被调整:

<ToolBar>
  <Grid><CheckBox IsChecked="True" VerticalAlignment="Center">Test</CheckBox></Grid>
</ToolBar>