【问题标题】:Bind IsChecked to boolean of struct wpf将 IsChecked 绑定到 struct wpf 的布尔值
【发布时间】:2017-02-26 20:38:22
【问题描述】:

我有以下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 属性(ColorStreamGrayStream)绑定到它们匹配的 IsVisible 属性?例如,这意味着ColorStreamIsChecked 属性将绑定到ObservableCollection 中第一项的“IsVisible”属性。

【问题讨论】:

  • 旁注,OC属性应该是只读的,它是一个可观察集合的关键在于它有一个CollectionChanged事件;将其粘贴在 INPC 属性中是没有意义的。另外,@ 987654334@ eew。去阅读框架设计指南。您的开发人员会看到这一点并悄悄地评判您。

标签: c# wpf mvvm binding ischecked


【解决方案1】:

如果您知道源集合中始终至少有两个项目,并且父 MenuDataContext 设置为定义了 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 2021-04-02
    • 2011-03-22
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 2016-06-11
    • 2012-11-15
    相关资源
    最近更新 更多