【发布时间】:2020-09-30 08:23:46
【问题描述】:
我的 ViewModel 中有一个名为 MenuList 的类型为 MenuModel 的对象列表。我正在使用 CaliburnMicro 框架
我想将此列表显示为具有 IsChecked 属性的 ToggleButtons 列表,该属性绑定到名为 SelectedMenusMonday 的其他对象列表,该列表类型为 SelectedMenuModel 仅具有 IsSelected 属性,并且与 MenuList 的长度相同。
MenuModel 如下所示:
public class MenuModel
{
public int MenuKey { get; set; }
public string MenuName { get; set; }
public string Description { get; set; }
}
菜单列表:
public List<MenuModel> MenuList
{
get { return _MenuList; }
set => Set(ref _MenuList, value);
}
SelectedMenuModel
public class SelectedMenuModel
{
public bool IsSelected { get; set; }
}
和 SelectedMenusMonday 列表:
private BindableCollection<SelectedMenuModel> _SelectedMenusMonday = new BindableCollection<SelectedMenuModel>();
public BindableCollection<SelectedMenuModel> SelectedMenusMonday
{
get { return _SelectedMenusMonday; }
set => Set(ref _SelectedMenusMonday, value);
}
我想这样显示:
<ItemsControl x:Name="MondayMenuList" ItemsSource="{Binding MenuList}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<ToggleButton Content="{Binding MenuName}" IsChecked="{Binding Path=DataContext.SelectedMenusMonday.IsSelected, RelativeSource={RelativeSource AncestorType={x:Type Window}}}">
</ToggleButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
MenuList 和 SelectedMenus Monday 由 SQL DB 填充。这是我尝试过的解决方案,但它不起作用。有人能帮助我吗!如果 SelectedMenusMonday 上的项目的 IsSelected 属性为 true,我希望 ToggleButtons 被“选中”。
非常感谢!
【问题讨论】:
-
您可以查看输出窗口是否有绑定异常,也可以使用snoop等第三方应用来挖掘绑定异常。
标签: c# wpf mvvm caliburn.micro