【发布时间】:2012-11-27 22:39:24
【问题描述】:
我正在使用带有动态字段生成器的 MVVM 模型,其中字段是从数据库中提取的,这样做是因为不同类型的表单需要不同的字段(TextBox/TextBlock、ComboBox 等)。问题是我正在尝试从字典中检索一个值,以在表单的 TextBlock 中显示,但我不确定如何绑定检索到的 Key 以便我可以显示该值。
目前,我正在做以下事情:
TextBlock textBlock = new TextBlock();
textBlock.SetBinding(TextBlock.TextProperty, createFieldBinding(myPropertyName);
使用如下绑定方式:
private Binding createFieldBinding(string fieldName) {
Binding binding = new Binding(fieldName);
binding.Source = this.DataContext;
binding.UpdateSourceTrigger = UpdateSourceTrigger.LostFocus;
return binding;
}
我在哪里通过 Score 之类的东西,它映射到 ViewModel 中的 Score 属性,但我如何绑定到字典键以检索其值?
如果可能的话,我希望能够绑定到 myDictionaryProperty[myDictionaryKey] 之类的东西。
示例:
下面为 ID 为 1 的玩家生成PlayerScore。
其中PlayerScore 是Dictionary<int, int>,PlayerID 是int。
<TextBlock Name="textBlockA" Text="{Binding PlayerScore[1]} />
【问题讨论】:
-
您必须创建一个MultiBinding,正如今天对this question 的回答中所解释的那样。
-
我不知道 MVVM。我只是使用 Source 到 Dictionary 和 Path = Value
-
@Clemens 太棒了,谢谢!我花了一些时间来修补我想要的东西,但这个解决方案对我有用。
标签: c# wpf binding dictionary code-behind