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

Hur*_*lan 4 wpf checkbox binding contextmenu toolbar

我可以得到一个CheckBox控件的isChecked属性设置为一个bool属性时,我把它作为一个用户控件或窗口的控制.但是,如果我把它放在一个工具栏,它不是可能除了薄左侧或右侧边缘偶可见(但绑定仍然有效).如果我把在一个ContextMenu,如选中或取消选中,但结合靶标没有影响它出现的罚款.

这是Window.Resources中的ContextMenu定义:

<ContextMenu x:Key="ContentMenu" DataContext="{Binding MyView}">
  <CheckBox IsChecked="{Binding Path=IsRed}"/>
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)

这是包含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>
Run Code Online (Sandbox Code Playgroud)

我只会问

1)如果有人可以建议工具栏问题的解决方案(可能是另一个模板?),

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

Gra*_*fix 10

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

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

<ToolBar>
  <Grid><CheckBox IsChecked="True" VerticalAlignment="Center">Test</CheckBox></Grid>
</ToolBar>
Run Code Online (Sandbox Code Playgroud)