我的ListBox
内有两个自定义UserControl
。
我的自定义ListBox1
有一个private List<Element> SubList
,它是其元素的子列表。此自定义控件实现PropertyChanged
等INotifyPropertyChanged
等。
我的ListBox2
必须显示此子列表。
他们两人也在使用DataTemplate
,但我不认为这会是问题,所以我不会在这里处理这部分内容。如果我错了,请告诉我,我会更新我的例子。
<UserControl>
<local:ListBox1 x:Name="ListBox1"
DataContext="{Binding MyFullList}"/>
<local:ListBox2 x:Name="ListBox2"
DataContext="{Binding ElementName=ListBox1}"
Content="{Binding Path=SubList}"/>
</UserControl>
它让我进入我的ListBox2:
(收藏)
我尝试使用一个元素而不是元素列表,它正在工作。 我也尝试过这样:
<UserControl>
<local:ListBox1 x:Name="ListBox1"
DataContext="{Binding MyFullList}"/>
<local:ListBox2 x:Name="ListBox2"
DataContext="{Binding ElementName=ListBox1, Path=SubList}"/>
</UserControl>
但它没有给我什么......我也尝试使用ObservableCollection
代替List
,但仍然没有。
我应该使用ListBox2
SubList
填充ListBox1
的约束力是什么?
我做错了什么?
答案 0 :(得分:0)
如果没有看到你的Model类,这只是一个猜测,但是如果要有一个包含子列表的模型,你可以绑定到ListBox1.SelectedItem并使用Sublist属性
<local:ListBox2 x:Name="ListBox2" DataContext="{Binding ElementName=ListBox1, Path=SelectedItem.SubList}"/>
答案 1 :(得分:0)
我找到了解决问题的方法。我尝试使用已填充的列表并且它正在运行。所以问题出在更新ListBox2
而不是DataBinding
。
我不知道为什么,但名为List
的{{1}}未更新SubList
,即使它正在触发ListBox2
事件等。
我只需要将OnPropertyChanged
更改为SubList
,以下代码正确执行ObservableCollection
:
DataBinding