それぞれがUIType(つまり、テキストボックス、チェックボックス、コンボなど)を持つオブジェクトのリストをバインドしたい。また、オブジェクトの Value プロパティがあります。
このリストを ItemControl (ListBox、DataGrid ..) にバインドします。ここで、各アイテムには、各オブジェクトの特定の UIType に対応する個別のテンプレートがあります (たとえば、コンボのアイテムには行にコンボがあり、チェックボックスのアイテムにはチェックボックスがあります)。 ...
明らかに prop Value は、各アイテムの関連するプロパティにバインドされます。
これを達成するための最も透明で、あまり精巧ではない方法は何ですか?
シルバーライト 5.
編集: (ヤコブのソリューションに基づく作業コード)
コード:
ObservableCollection<UIType> data;
public MainPage()
{
InitializeComponent();
data = new ObservableCollection<UIType>()
{
new UITypeTextBox() { Value = "Value.." },
new UITypeCheckBox(){ Value = true },
};
lb.ItemsSource = data;
}
public class UIType { }
public class UITypeTextBox : UIType { public object Value { get; set; }}
public class UITypeCheckBox : UIType { public object Value { get; set; } }
xaml:
<ListBox x:Name="lb">
<ListBox.Resources>
<DataTemplate DataType="local:UITypeTextBox">
<TextBox Text="{Binding Value}" />
</DataTemplate>
<DataTemplate DataType="local:UITypeCheckBox">
<CheckBox IsChecked="{Binding Value}" />
</DataTemplate>
</ListBox.Resources>
</ListBox>