2017-08-11 62 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。

相關問題