我正在尝试在 WPF 中创建一个 CustomUserControl。此 CustomUserControl 包含 ObservableCollection 类型的 DependencyProperty。
我的目标是能够:
- 可以直接在xaml代码中设置集合
- 能够将集合绑定到我的 ViewModel 中的集合
- 能够使用样式设置器设置集合
- 我的 CustomUserControl 的每个实例都有一个不同的集合实例。
这是我现在所拥有的:
<my:CustomUserControl ImageList={Binding imgList}/>
ImageList 定义如下:
public static readonly DependancyProperty ImageListProperty = DependancyProperty.Register
("ImageList", typeof(List<ImageSource>), typeof(Switch));
public List<ImageSource> ImageList {
get { return (List<ImageSource>)GetValue(ImageListProperty); }
set { SetValue(ImageListProperty, value); }
}
为了让每个 CustomUserControl 都有一个新的 ImageList 实例,我在 CustomUserControl 的 ctor 中添加了以下行:
public CustomUserControl(){
...
SetValue(ImageListProperty, new List<ImageSource>());
}
现在,以下代码示例可以工作:
<my:CustomUserControl>
<my:CustomUserControl.ImageList>
<BitmapImage UriSource="Bla.png"/>
<BitmapImage UriSource="Bla2.png"/>
</my:CustomUserControl.ImageList>
</my:switch>
这也有效:
<my:CustomUserControl ImageList={Binding imgList}/>
但这不是:
<Style TargetType="my:CustomUserControl">
<Setter Property="my:CustomUserControl.ImageList">
<BitmapImage UriSource="Bla.png"/>
<BitmapImage UriSource="Bla2.png"/>
</Setter>
</Style>
这会为所有实例留下一个空的 ImageList。
PS 这是伪代码,因为我不记得确切的语法。
谢谢!