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 正確な構文を思い出せないので、これは疑似コードです。
ありがとう!