【发布时间】:2014-05-12 20:12:28
【问题描述】:
我有一个图例上的项目的依赖属性。它看起来像:
public List<LegendItem> LegendItems
{
get { return (List<LegendItem>)GetValue(LegendItemsProperty); }
set { SetValue(LegendItemsProperty, value); }
}
// Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
public static readonly DependencyProperty LegendItemsProperty =
DependencyProperty.Register("LegendItems", typeof(List<LegendItem>), typeof(TipScoreboard), new PropertyMetadata());
其中LegendItem 是UserControl。
我可以像这样在 XAML 中毫无问题地设置它。
<local:TipScoreboard.LegendItems>
<local:LegendItem ItemFillBrush="{DynamicResource GreenStatusBrush}"
Label="{x:Static res:TipLabels.GoodScan}"/>
<local:LegendItem ItemFillBrush="{DynamicResource RedStatusBrush}"
Label="{x:Static res:TipLabels.BadScan}"/>
</local:TipScoreboard.LegendItems>
但是,当我像这样在 setter 中设置此属性时:
<Setter Property="LegendItems">
<Setter.Value>
<local:LegendItem ItemFillBrush="{DynamicResource GreenStatusBrush}"
Label="{x:Static res:TipLabels.GoodScan}"/>
<local:LegendItem ItemFillBrush="{DynamicResource YellowStatusBrush}"
Label="{x:Static res:TipLabels.LowConfidence}"/>
</Setter.Value>
</Setter>
我得到了二传手的The property "Value" is set more than once.。我不知道如何包装这个或做什么。我试过只用一个 List 包裹它,但这似乎不起作用。
编辑:我尝试创建一个自定义包装的集合,一切都符合并运行,但内容为空白。
public class LegendItemCollection : Collection<LegendItem>
{
}
public LegendItemCollection LegendItems
{
get { return (LegendItemCollection)GetValue(LegendItemsProperty); }
set { SetValue(LegendItemsProperty, value); }
}
public static readonly DependencyProperty LegendItemsProperty =
DependencyProperty.Register("LegendItems", typeof(LegendItemCollection), typeof(TipScoreboard), new PropertyMetadata());
和 XAML:
<Setter Property="LegendItems">
<Setter.Value>
<local:LegendItemCollection>
<local:LegendItem ItemFillBrush="{DynamicResource GreenStatusBrush}"
Label="{x:Static res:TipLabels.GoodScan}"/>
<local:LegendItem ItemFillBrush="{DynamicResource YellowStatusBrush}"
Label="{x:Static res:TipLabels.LowConfidence}"/>
</local:LegendItemCollection>
</Setter.Value>
</Setter>
【问题讨论】:
标签: wpf wpf-controls