我有一个类型为 菜单模式 叫做 菜单列表 在我的ViewModel里面。我使用的是CaliburnMicro框架
我想把这个列表显示为具有以下功能的ToggleButtons的列表。IsChecked 属性绑定到其他对象列表,称为 精选菜单星期一,它是类型的列表 选择的菜单模式 只有IsSelected属性,且长度与MenuList相同。
MenuModel看起来像这样。
public class MenuModel
{
public int MenuKey { get; set; }
public string MenuName { get; set; }
public string Description { get; set; }
}
MenuList.MenuModel看起来像这样:
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从SQL DB中得到填充。这是我试过的解决方案,但它不工作。谁能帮助我,请 我想让ToggleButtons在SelectedMenusMonday上的项目有IsSelected属性时被 "选中"。
非常感谢您
在你的视图中命名根元素(或者任何你知道DataContext是正确的地方),然后使用 ElementName
绑定,如图所示。
<UserControl x:Name="view">
<Grid>
<ItemsControl x:Name="MondayMenuList" ItemsSource="{Binding MenuList}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<ToggleButton Content="{Binding MenuName}" IsChecked="{Binding ElementName=view, Path=DataContext.SelectedMenusMonday}">
</ToggleButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
注意 x:Name="view"
在 UserControl
元素。