7

ユーザーコントロールまたはウィンドウにコントロールとして配置すると、CheckBoxコントロールのisCheckedプロパティをプロパティに取得できます。boolただし、ツールバーに配置すると、左端または右端が薄い場合を除いて、表示されません(ただし、バインディングは機能します)。ContextMenuに入れると、チェックされているかチェックされていないかは問題なく表示されますが、バインディングターゲットは影響を受けません。

これは、Window.ResourcesのContextMenu定義です。

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

これは、チェックボックスとチェックボックス付きのツールバーを含む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

意味がわかります。チェックボックスはトグルボタンのように見えます。ツールバーのcontroltemplateを見ると、いくつかのタイプの子コントロールのcontroltemplateが調整されていることがわかります。

トリックまたはバグがあります。チェックボックスをStackpanel、Gridなどのlayoutcontainerに配置すると、そのコントロールテンプレートは調整されません。

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