C# 将ListBoxItem的IsSelected属性绑定到Itemssource的DataContext
我有一个定义了Itemssource的列表框:C# 将ListBoxItem的IsSelected属性绑定到Itemssource的DataContext,c#,wpf,xaml,C#,Wpf,Xaml,我有一个定义了Itemssource的列表框: <ListBox x:Name="ModuleListBox" DockPanel.Dock="Top" ItemsSource="{Binding MenuItems}"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="Is
<ListBox
x:Name="ModuleListBox"
DockPanel.Dock="Top"
ItemsSource="{Binding MenuItems}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
我的列表框所在视图的ViewModel如下所示:
public class MenuItemViewModel : BaseViewModel
{
private bool isSelected;
public bool IsSelected
{
get { return isSelected; }
set { SetProperty(ref isSelected, value); }
}
}
public class ShellViewModel : BaseViewModel
{
public ObservableCollection<MenuItemViewModel> MenuItems
{
get { return menuItems; }
set { SetProperty(ref menuItems, value); }
}
}
公共类ShellViewModel:BaseViewModel
{
公共可观测集合菜单项
{
获取{return menuItems;}
set{SetProperty(ref menuItems,value);}
}
}
我的问题是如何将ListBoxItem的IsSelected属性绑定到MenuItemViewModel项目对象的Selected属性?
<ListBox
x:Name="ModuleListBox"
DockPanel.Dock="Top"
ItemsSource="{Binding MenuItems}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsSelected" Value="{Binding RelativeSource={RelativeSource Self}, Path=DataContext.IsSelected}" />
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
设置listbox的选定项目属性
SelectedItem="{Binding Path=SelectedMenuItem, Mode=TwoWay}"
还要在ShellViewModel中创建SelectedMenuItem
SelectedItem from ListBox不是布尔值,因此如果您真的想将其绑定到menuitem,则必须编写IValueConvertor。您现在的代码有什么问题?您没有提供可靠地再现问题的产品,也没有说明存在任何具体问题。你发布的一点点代码没有明显的错误。那么,你的问题是什么?