将 IsChecked 绑定到 struct wpf 的布尔值
Bind IsChecked to boolean of struct wpf
我有以下 struct
:
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' 中,我有这个:
<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>
是否可以将每个 MenuItems
IsChecked
属性(ColorStream
和 GrayStream
)绑定到它们匹配的 IsVisible
属性?这意味着,例如,ColorStream
的 IsChecked
属性 将绑定到 ObservableCollection
中第一项的 'IsVisible' 属性。
如果您知道源集合中始终至少有两个项目,并且父 Menu
的 DataContext
设置为 class 的实例,其中ListOfStreams
属性 已定义,您可以这样做:
<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>
我有以下 struct
:
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' 中,我有这个:
<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>
是否可以将每个 MenuItems
IsChecked
属性(ColorStream
和 GrayStream
)绑定到它们匹配的 IsVisible
属性?这意味着,例如,ColorStream
的 IsChecked
属性 将绑定到 ObservableCollection
中第一项的 'IsVisible' 属性。
如果您知道源集合中始终至少有两个项目,并且父 Menu
的 DataContext
设置为 class 的实例,其中ListOfStreams
属性 已定义,您可以这样做:
<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>