当我将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
的正确方法(这似乎是实际问题)。
答案 0 :(得分:9)
我明白你的意思,chekbox现在看起来像一个切换按钮。如果您查看工具栏的controltemplate,您会看到它调整某些类型的子控件的控件模板。
如果您将Checkbox放在某些布局容器(如Stackpanel,Grid等)中,那么有一个技巧或错误,那么它的controltemplate不会被调整:
<ToolBar>
<Grid><CheckBox IsChecked="True" VerticalAlignment="Center">Test</CheckBox></Grid>
</ToolBar>