2017-08-11 63 views
-1

的我有一个的ItemsSource的ListBox的定义:绑定一个ListBoxItem的IsSelected属性到的DataContext的ItemsSource

<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> 

我的MenuItems视图模型实现了INotifyChanged接口,看起来像:

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); } 
    } 
} 

我的问题是我如何将ListBoxItem的IsSelected属性绑定到MenuItemViewModel项目对象的Selected属性?

+0

你现在的代码有什么问题?您没有提供可靠地重现问题的良好[mcve],并且您没有说明存在任何特定问题。没有什么明显的错误,你做了一小段代码发布。那么,你的问题是什么? –

回答

1
<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> 
0

设置列表框中选择的项目支撑

SelectedItem="{Binding Path=SelectedMenuItem, Mode=TwoWay}" 

而且在ShellViewModel创建SelectedMenuItem

的SelectedItem从Control不是布尔值,所以如果你真的想将它绑定到菜单项,然后你必须写你的IValueConvertor。

相关问题