gpt4 book ai didi

c# - WPF 中的绑定(bind)字典

转载 作者:太空宇宙 更新时间:2023-11-03 16:21:15 29 4
gpt4 key购买 nike

我有一个字典

public class TAGs :INotifyPropertyChanged{
private Dictionary<string, string[]> _items = new Dictionary<string,string[]>();
...............
public string[] Keys
{
get { return Items.Keys.ToArray(); }
}

}

我想创建 2 个列表,1 个列表用于键,另一个列表包含所选键的值,我试过这个但它不起作用

<ListBox x:Name="TagNameList" ItemsSource="{Binding Keys}"/>
<ListBox ItemsSource="{Binding Items[{Binding SelectedItem,ElementName=TagNameList}]}"/>

我将它们包含在一个网格中,它们的数据上下文是 TAG 的一个对象,第一个列表框工作正常,因为它简单地绑定(bind)到一个属性,但第二个列表不起作用有帮助吗?

最佳答案

“{Binding Items[{Binding SelectedItem,ElementName=TagNameList}]}” 不是有效的 xaml。您不能在路径内进行绑定(bind),因为路径是在编译时构建的。

当我自己遇到这个问题时,我只是简单地将其他东西绑定(bind)到一个 ListBoxSelectedItem 上,然后当它收到更改通知时,也会触发一个 NotifyPropertyChanged 在另一个属性上公开 Items[selectedKey],我的第二个 ListBox 绑定(bind)到该属性。

xaml:

<ListBox x:Name="TagNameList" ItemsSource="{Binding Keys}" SelectedItem={Binding Selected}/>
<ListBox ItemsSource="{Binding ValueFromKey}"/>

C#:

string _selected;
public string Selected
{
get { return _selected; }
set
{
_selected= value;
OnPropertyChanged("Selected");
OnPropertyChanged("ValueFromKey");
}
}

public string[] ValueFromKey
{
get { return Items[Selected]; }
}

关于c# - WPF 中的绑定(bind)字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809643/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com