我有一个数据源('SampleAppearanceDefinitions'),它包含一个集合('Definitions')。集合中的每个项目都有几个属性,包括Color,这是我在这里感兴趣的。WPF - 动态访问XAML中集合的特定项目
我希望在XAML中将集合中特定项目的颜色显示为文本。我可以做到这一点就好用下面这段代码...
Text="{Binding Source={StaticResource SampleAppearanceDefinitions}, Path=Definitions[0].Color}"
唯一的问题是,这需要我硬编码定义集合中的项目的索引(我在这个例子中使用0以上)。我想要做的事实上是从我当前的DataContext('AppearanceID')中的属性中获取该值。有人可能会想象正确的代码看起来像这样......
Text="{Binding Source={StaticResource SampleAppearanceDefinitions}, Path=Definitions[{Binding AppearanceID}].Color}"
......但当然,这是错误的。
任何人都可以告诉我做正确的方法是什么?仅在XAML中可能吗?感觉应该是这样,但我无法解决或找到如何去做。
任何帮助将不胜感激!
谢谢!
AT
它将如何与TwoWay绑定工作? – Pragmateek 2010-06-01 12:49:39
如果您希望多个数据可用于您的价值,您可以使用MultiBinding而不是普通的Binding;对于双向绑定,您将不得不在ConvertBack方法中提供一些逻辑。 – Arcturus 2010-06-02 06:52:56
准确地说,这个实现看起来并不明显:检索哪个对象是集合,哪个集合以及哪个索引的边界值是棘手的;如果它存在于多个集合中呢?转换器需要更多的上下文:我想这个上下文可以通过ConverterParameter传递,但是产生的Xaml可能很重。你能提供一个简单的实现吗?谢谢。 – Pragmateek 2010-06-02 09:03:47