gpt4 book ai didi

wpf - MenuItem IsChecked 属性未绑定(bind)到 VM 属性

转载 作者:行者123 更新时间:2023-12-03 10:39:42 27 4
gpt4 key购买 nike

您好,我是一名新的 WPF/MVVM 程序员,遇到了 MenuItem 的问题。

我有一个菜单,它的 ItemsSourced 绑定(bind)到我创建的对象;

        <Menu Height="23" HorizontalAlignment="Left" Name="menuProfile" VerticalAlignment="Top" Width="58" >
<MenuItem Header="Profiles" ItemsSource="{Binding Path=ProfileList}" DisplayMemberPath="ProfileName" >
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="IsCheckable" Value="True"/>
<Setter Property="IsChecked" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>

当我运行它时,我可以在菜单中看到我的所有项目,但我的属性 已选中 没有得到更新。
    public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
GetProfileConfigInfo();
}
}

如果我取出样式容器并放入 可检查 已检查 值符合 MenuItem....
<MenuItem Header="Profiles" ItemsSource="{Binding Path=ProfileList}" DisplayMemberPath="ProfileName" IsCheckable="True" IsChecked="{Binding IsSelected}" />

我的属性(property) 已选中 得到更新,但我看不到菜单中的任何项目,只是标题配置文件。

并知道我做错了什么????

最佳答案

在 IsSelected 的 setter 中,您需要调用 OnPropertyChanged("IsSelected")。

我认为这可以解决您的问题。

我将您的确切代码(如下)复制到 Blend 中,并使用您的确切属性名称创建了一个示例数据源,并且菜单中的复选框正常工作。

<Menu Height="23" HorizontalAlignment="Left" Name="menuProfile" VerticalAlignment="Top" Width="58" >
<MenuItem Header="Profiles" ItemsSource="{Binding Path=ProfileList}" DisplayMemberPath="ProfileName" >
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="IsCheckable" Value="True"/>
<Setter Property="IsChecked" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>

关于wpf - MenuItem IsChecked 属性未绑定(bind)到 VM 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com