2017-02-26 2 views
0

WPF 구조체 부울합니다 :바인딩의 IsChecked 내가 <code>struct</code> 다음 한

public struct StreamContainer 
{ 
    public string Name { get; set; } 
    public bool IsVisible { get; set; } 
    public Canvas Canvas { get; set; } 
} 

다음 개인 회원 :

private ObservableCollection <StreamContainer> m_listOfStreams = new ObservableCollection<StreamContainer>(); 

다음 등록 정보 :

public ObservableCollection<StreamContainer> ListOfStreams 
{ 
    get { return m_listOfStreams; } 
    set 
    { 
     m_listOfStreams = value; 
     OnPropertyChanged(); 
    } 
} 

에서 내 ' Xaml ', 다음과 같습니다.

,210
<MenuItem x:Name="StreamsMenu" Header="Streams" Foreground="DarkRed" Focusable="False"> 
    <MenuItem x:Name="ColorStream" Header="Color" IsCheckable="True" IsChecked="True" Foreground="DarkRed" Click="SelectStream_OnClick"/> 
    <MenuItem x:Name="GrayStream" Header="Depth" IsCheckable="True" Foreground="DarkRed" Click="SelectStream_OnClick"/> 
</MenuItem> 

는 그들의 IsVisible 정합성에 MenuItemsIsChecked 속성 (ColorStreamGrayStream)를 각각 결합 할 수 있는가? 예를 들어 의 IsChecked 속성은 ObservableCollection의 첫 번째 항목의 'IsVisible'속성에 바인딩됩니다.

+0

사이드 노트, OC 속성은 읽기 전용이어야합니다. 관찰 가능한 컬렉션이라는 점은 CollectionChanged 이벤트가 있다는 것입니다. INPC 속성에 고정하는 것은 의미가 없습니다. 또한,'m_listOfStreams'가 새롭게 추가되었습니다. 프레임 워크 설계 지침을 읽어보십시오. 동료 개발자가이를보고 조용히 판단 할 것입니다. – Will

답변

1

당신은 소스 컬렉션에서 두 개 이상의 항목이 항상 있다는 것을 알고 있다면 부모 MenuDataContextListOfStreams 속성이이 작업을 수행 할 수있는 정의 된 클래스의 인스턴스로 설정되어 있는지 :

<Menu> 
    <MenuItem x:Name="StreamsMenu" Header="Streams" Foreground="DarkRed" Focusable="False"> 
     <MenuItem x:Name="ColorStream" Header="Color" IsCheckable="True" 
          IsChecked="{Binding Path=DataContext.ListOfStreams[0].IsVisible, RelativeSource={RelativeSource AncestorType=Menu}}" 
          Foreground="DarkRed" /> 
     <MenuItem x:Name="GrayStream" Header="Depth" IsCheckable="True" 
          IsChecked="{Binding Path=DataContext.ListOfStreams[1].IsVisible, RelativeSource={RelativeSource AncestorType=Menu}}" 
          Foreground="DarkRed"/> 
    </MenuItem> 
</Menu> 
+0

매력처럼 작동합니다. 감사!!! – Idanis