从ItemSources中的属性绑定Stroke

时间:2017-11-16 15:18:10

标签: wpf xaml data-binding

我有一个对象的集合说MyModel.cs。该集合称为Some。在MyModel中,它有一个属性Color,它是Brush类型。

现在所有人的颜色都是红色。

现在我有了

<MyControl: x:Name="control1" ItemsSource="{Binding Some}" Stroke="Red">

但是你看到我对笔画进行了硬编码。我想要的是类似的东西      Stroke = "{Binding Some.Color}"

如何?

2 个答案:

答案 0 :(得分:2)

控件显示几个模型。如果要将Stroke属性设置为其中一个Color,则需要指定哪一个,例如:

<MyControl x:Name="control1" ItemsSource="{Binding Some}" Stroke="{Binding Some[0].Color}">

这会将Stroke属性绑定到第一个 Color对象的MyModel属性,假设Some集合有一个索引器

答案 1 :(得分:1)

如果MyControl继承自Selector,请设置IsSynchronizedWithCurrentItem="True"并绑定到Some/Color。斜杠或virgule(/)表示使用集合中“当前项”的Color属性:

<MyControl 
    IsSynchronizedWithCurrentItem="True"
    x:Name="control1" 
    ItemsSource="{Binding Some}" 
    Stroke="{Binding Some/Color}"
    />

这将使用所选项目的颜色笔刷进行描边。你很不情愿地提供关于你想要做什么的任何提示,但这是一个公平的猜测。

如果MyControl未从Selector继承,请使用mm8的解决方案。