我正在开发一款时尚的ColorPicker Control并且效果很好,但我在重新初始化时遇到了问题。
我有一个叫做BaseBrushes的女巫看起来像这样
public ObservableCollection<Brush> BaseBrushes
{
get { return (ObservableCollection<Brush>)GetValue(BaseBrushesProperty); }
set { SetValue(BaseBrushesProperty, value); }
}
// Using a DependencyProperty as the backing store for BaseBrushes. This enables animation, styling, binding, etc...
public static readonly DependencyProperty BaseBrushesProperty =
DependencyProperty.Register("BaseBrushes", typeof(ObservableCollection<Brush>), typeof(ColorPicker), new UIPropertyMetadata(new ObservableCollection<Brush>()));
在XAML网站上,我将其设置为
<gc:ColorPicker Margin="0,15,0,0" SelectedBrush="#FF1E65C4" PaletteSize="6" StepSize="25">
<gc:ColorPicker.BaseBrushes>
<SolidColorBrush Color="Red"/>
<SolidColorBrush Color="Blue"/>
<SolidColorBrush Color="Orange"/>
<SolidColorBrush Color="Green"/>
<SolidColorBrush Color="Yellow"/>
<SolidColorBrush Color="Black"/>
<SolidColorBrush Color="White"/>
</gc:ColorPicker.BaseBrushes>
</gc:ColorPicker>
现在我的问题是,每当我打开一个带有ColorPicker的窗口时,它会再次将所有画笔添加到List中,所以在第二个视图中我有14种颜色而不是7种颜色。
我可以在BeginInit()方法中清除List,但我认为这不是一个正确的解决方案。 我认为这种行为不正常,所以我没有看到什么。
如果有人知道某事,请帮助我
最诚挚的问候 迪马
答案 0 :(得分:0)
这是因为在您的实施中,BaseBrushes
的默认值是单ObservableCollection
。重置尺寸仍然不是您想要的,因为所有ColorPickers
仍然会共享相同的BaseBrushes
集合。
您只需在BaseBrushes
构造函数中为ColorPicker
创建一个新的空集合:
BaseBrushes = new ObservableCollection<Brush>();
有关详细信息,请参阅本文中的编写集合属性部分: