我正在使用ItemsControl
,其中有一个对象列表... ItemContainerTemplate
中有另一个DataTemplate
。在该DataTemplate
内部,我无法再绑定到ItemsControl.ItemSource
。
由于我对通过Find Ancestor
和RelativeSource
等进行的绑定不是很好。我尝试了所有操作,甚至都不知道如何正确使用它们...
<ItemsControl ItemsSource="{Binding NoteList}">
<ItemsControl.ItemTemplate>
<ItemContainerTemplate>
<GroupBox Header="{Binding Title}"
Name="MyNoteList"
Style="{DynamicResource MaterialDesignCardGroupBox}"
Margin="16">
<GroupBox.HeaderTemplate>
<DataTemplate>
<DockPanel>
<TextBlock Margin="8,0,0,0"
VerticalAlignment="Center"
Style="{StaticResource MaterialDesignSubheadingTextBlock}"
Text="{Binding}" />
<Button Padding="5"
Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}, Path=DataContext.NoteId}"
HorizontalAlignment="Right"
Background="Transparent"
BorderBrush="Transparent">
<materialDesign:PackIcon Kind="Delete"
Height="25"
Width="25"
VerticalAlignment="Center" />
</Button>
</DockPanel>
</DataTemplate>
</GroupBox.HeaderTemplate>
</GroupBox>
</ItemContainerTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我想提到的是,我想绑定到NoteList
中名称为NoteId
的{{1}}对象。但是我一直从中得到“空”。我的ViewModel内部的绑定肯定是正确的。所以我只需要知道如何从我的CommandParameter
NoteId
属性
答案 0 :(得分:0)
我实际上已经解决了问题! xD!我只需要绑定到ItemContainerTemplate
内部的元素,就我而言,就是绑定到GroupBox
(在上面的代码片段中看到)。
CommandParameter="{Binding DataContext.NoteId, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type GroupBox}}}"