【发布时间】:2018-01-30 18:37:32
【问题描述】:
我有一个关于将特定可观察(或列表)项绑定到我的 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();
在xml中:
<TextBlock Text="{Binding Symbols[0].Value, Mode=TwoWay}"></TextBlock>
我想要的是,绑定到这个集合中一个符号的值。但要通过其名称(字符串属性名称)来执行此操作。类似:
<Textblock Text="Binding Symbols.a.Value, Mode=TwoWay}"></Textblock>
当然,上面的绑定不起作用,但它只是为了向你们展示我在寻找什么。
【问题讨论】:
-
我无法想象会发生绑定
Mycollection[14224]的情况。对于集合 wpf 有ItemsControl -
如果您的集合中有特殊的魔法物品需要单独绑定,您的视图模型应该将它们作为单个属性公开。如果要在 XAML 中复制和粘贴 14,224 个 TextBlock,则需要听取 ASh 的建议并使用 ItemsControl。
标签: wpf xaml mvvm collections binding