これは私の具体的なシナリオです。DataTemplateをCollectionContainerに追加する方法
ウィンドウのリソースコード:
...
<Window.Resources>
<ResourceDictionary>
<CollectionViewSource x:Key="AdditionalStringData" Source="{Binding ViewModelObservableCollection_String}"/>
<CollectionViewSource x:Key="AdditionalCustomObjectData" Source="{Binding ViewModelObservableCollection_CustomObject}"/>
<ResourceDictionary.MergedDictionaries>
...
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
...
私はコレクションを表示する必要が一部:
...
<StackPanel>
<ItemsControl>
<ItemsControl.ItemsSource>
<CompositeCollection>
<TextBlock Text="{Binding ViewModelTextProperty}"/>
<Button Command="{Binding ViewModelRelayCommand}">Command</Button>
<CollectionContainer Collection="{Binding Source={StaticResource AdditionalStringData}}" />
<CollectionContainer Collection="{Binding Source={StaticResource AdditionalCustomObjectData}}" />
</CompositeCollection>
</ItemsControl.ItemsSource>
</ItemsControl>
</StackPanel>
...
ViewModelに(それが正しくバインドされていることを前提と)
...
private string ViewModelTextProperty { get; set; } = "Sample Text";
public RelayCommand ViewModelRelayCommand { ... }
private ObservableCollection<string> ViewModelObservableCollection_String { get; set; } = new ObservableCollection<string>();
private ObservableCollection<CustomObject> ViewModelObservableCollection_CustomObject { get; set; } = new ObservableCollection<CustomObject>();
...
にClass CutomObject(表示する必要はないかもしれません):
...
public class CustomObject
{
public string firstString;
public string secondString;
public CustomObject()
{
...
}
...
}
...
ObservableCollection
に適切な内容があるとします。
私の質問は、コレクションを正しく表示するにはどうすればいいですか?ここで が基準です:最初の行で
- 、「サンプルテキスト」
- 次のラベルが付いたボタンであると言い、その中のテキスト「コマンド」とのTextBlockがあるでしょう
- 次行数(
ViewModelObservableCollection_String
個)はTextBlocksです。そのテキストは、個々の項目の値であるViewModelObservableCollection_String
でなければなりません。 - 次の行は、テキストボックスです(
ViewModelObservableCollection_CustomObject
)。そのテキストは、ViewModelObservableCollection_CustomObject
(連結:firstString
とsecondString
)の個々の項目の値である必要があります。
ご覧のとおり、StackPanelの内容は、異なるDataTemplate
の複数のコレクションのマージです。
明確でないものがあるかどうかを尋ねてください。
感謝。もっと詳しく教えていただけますか?私はWPFで比較的新しいです。 – someone
私は、あなたの2番目の提案は簡単だと思います。サンプルコードを提供していただけますか?そうでない場合は、私にそれに関する参考資料を与えてください。 – someone