2010-05-25 5 views
7

누구나 메뉴 항목 바인딩이 작동하지 않는 이유를 알고 계십니까?WPF MenuItem IsChecked 바인딩이 작동하지 않습니다.

<ToggleButton Name="toggleButton" Checked="checkBoxPublish_Checked" > 
    <ToggleButton.Resources> 
     <converters:BooleanToHiddenVisibility x:Key="boolToVis"/> 
    </ToggleButton.Resources> 
    <Grid> 
     <Image Height="auto" HorizontalAlignment="Left" Margin="5" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="auto" /> 
     <Viewbox > 
      <TextBlock Text="Blocked" Opacity="0.7" Foreground="Red" Visibility="{Binding Path=IsChecked, ElementName=toggleButton, Converter={StaticResource boolToVis}}"/> 
     </Viewbox> 
    </Grid> 
    <ToggleButton.ContextMenu> 
     <ContextMenu StaysOpen="True" > 
      <MenuItem x:Name="menuItemBlock" Header="Block" Click="menuItemClick" IsCheckable="True" IsChecked="{Binding ElementName=toggleButton, Path=IsChecked}"/> 
      <MenuItem x:Name="menuItemIgnorePtz" Header="Ignore Ptz" Click="menuItemClick" IsCheckable="True" /> 
     </ContextMenu> 
    </ToggleButton.ContextMenu> 
</ToggleButton> 

답변

8

나는 그것이와 데이터 바인딩을 사용하면 문제가있는하려면 contextmenu입니다 같은데요.

은, 경우 ElementName을 사용하여 토글 버튼을 찾을 당신은 VS에서 출력 창에 바인딩을위한 오류가 발생하는 이유는 그 http://blogs.msdn.com/b/mikehillberg/archive/2008/05/23/of-logical-and-visual-trees-in-wpf.aspx

를 볼 수 있도록 토글 버튼은의 ContextMenu의 논리적 트리에없는 :

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=toggleButton'. BindingExpression:Path=IsChecked; DataItem=null; target element is 'MenuItem' (Name='menuItemBlock'); target property is 'IsChecked' (type 'Boolean')

이 수정 사용하여 토글 버튼을 조회하려면 FindAncestor : 나는 먼저이 글을 읽을 때

<MenuItem 
    Header="Block" 
    IsCheckable="True" 
    IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.IsChecked}" /> 
+1

, 난 당신이 * 당신의 datas에 바인딩 * 것을 몰랐어요 (ContextMenu.PlacementTarget 속성을 통해 RelativeSource 확장을 통해 출처를 밝히는 것이 아니라) Container 컨트롤의 시각적 트리로 되돌아가는 방법입니다. 그러나, 아마 그저 조금 느린되고 난 지금 그것을 (그리고 내 문제를 해결했습니다). 도와 주셔서 감사합니다. +1. –

관련 문제