背景
考虑这个XAML片段:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="100"/>
</Grid.RowDefinitions>
<DataGrid
Grid.Row="0"
x:Name="dataGrid"
AutoGenerateColumns="False"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=Bobs}"
>
<DataGrid.Columns>
<DataGridTextColumn
Header="Name"
Binding="{Binding Name}"
MinWidth="75"
/>
</DataGrid.Columns>
</DataGrid>
<ListBox
Grid.Row="1"
x:Name="listBox"
DisplayMemberPath="Name"
ItemsSource="{Binding ElementName=dataGrid, Path=SelectedItem.Regions}"
SelectionMode="Multiple"
>
<Interactivity:Interaction.Behaviors>
<ListBoxBehaviors:SynchronizeSelectedItemsBehavior Selections="{Binding ElementName=dataGrid, Path=SelectedItem.SelectedRegions}"/>
</Interactivity:Interaction.Behaviors>
</ListBox>
</Grid>
假设我有一个单独的控件,当切换时,将Grid的IsEnabled属性设置为false。这样做可以禁用网格中的DataGrid和ListBox控件。
在.NET 4.0中,禁用DataGrid的一个令人遗憾的副作用是DataGrid unselects all cells,因此其SelectedItem将丢失。这具有触发ListBox的ItemsSource绑定的副作用,导致ItemsSource被清除,因为dataGrid的SelectedItem已变为null。
问题:
如何更改绑定或更改我的XAML,以便当dataGrid的SelectedItem变为null时,不会清除ListBox的items集合。
补遗: