我有一个关于将特定的可观察(或列表)项绑定到我的wpf应用程序中的文本块的问题。通常,您可以绑定特定项目,例如this
但是当你的收藏品增长到(例如)一个巨大的收藏品时。绑定属性如:
Mycollection[14224].Name
威尔只是变得一团糟。那么是否有另一种绑定方法,它仍然允许我绑定到我的可观察集合中的特定项。但是不是通过集合中项目的索引来实现的。如果是这样,这是怎么做到的?
只是为了更加清晰:
(在'半'伪)
Public class symbol
{
Public string Name {get; set;}
Public string Value {get; set;}
Public symbol(string name, string value)
{
this.Name = name;
this.Value = value;
}
}
Public class viewmodel : BaseViewModel
{
Public ObservableCollection<Symbol> Symbols{get;set;}
Public viewmodel()
{
Symbols = new ObservableCollection<Symbol>();
Symbols.Add(new symbol("a","a"));
Symbols.Add(new symbol("b","b"));
//..etc etc..
}
}
代码背后的代码:
DataContext = new viewmodel();
xaml中的:
<TextBlock Text="{Binding Symbols[0].Value, Mode=TwoWay}"></TextBlock>
我想要的是,绑定到此集合中符号的值。但要通过其名称(字符串属性名称)执行此操作。类似于:
<Textblock Text="Binding Symbols.a.Value, Mode=TwoWay}"></Textblock>
当然,上面的绑定不起作用,但它只是为了向你们展示我在寻找什么。
答案 0 :(得分:0)
如果绑定到Dictionary<string, string>
,您可以按照我的建议在XAML中指定string
键:
XAML: Bind IsChecked to list object using an enum to index
你不能使用ObservableCollection<Symbol>
执行此操作。密钥必须是编译时常量。它不能是您尝试使用绑定或其他内容解析的动态值。 XAML不支持此功能。
答案 1 :(得分:0)