我已将第一个ListBox'ListBox1'的ItemsSource属性指定为另一个ListBox的ItemsSource,即'ListBox2'。如果我将ListBox2的ItemsSource设置为null,那么我无法将任何项目进一步添加到ListBox1的ItemsSource。
以下是xaml片段
<ListBox VerticalAlignment="Top" HorizontalAlignment="Center" Width="150" Margin="0 25 0 0"
x:Name="ListBox1" ItemsSource="{Binding Coll,Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding _Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<ListBox VerticalAlignment="Top" HorizontalAlignment="Center" Width="150" Margin="0 25 0 0"
x:Name="ListBox2" ItemsSource="{Binding Path=ItemsSource,ElementName=ListBox1,Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding _Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在Code back中,我将ListBox2的ItemSource设置为null,如下面的按钮点击,
ListBox2.SetCurrentValue(ListBox.ItemsSourceProperty, null);
完成后,我尝试将项目添加到ListBox1的“Coll”集合中,但抛出NRE表示“Coll”为空。
任何建议plz。
此致 Dinesh Kumar P
答案 0 :(得分:0)
当ListBox2.ItemsSource
设置为ListBox1.ItemsSource
时,null
上的双向约束将ListBox2.ItemsSource
设置为null
。随后,ListBox1.ItemsSource
上的双向绑定也将Coll
设置为null
。
不要双向进行ItemsSource
绑定。没有必要,仍会收到收集更改。
<ListBox x:Name="ListBox1"
ItemsSource="{Binding Coll}" ... >
...
</ListBox>
<ListBox x:Name="ListBox2"
ItemsSource="{Binding Path=ItemsSource, ElementName=ListBox1}" ... >
...
</ListBox>
您要实现的目标并不是很清楚,但最好还是将ListBox2.ItemsSource
直接绑定到Coll
属性。