我在ItemsControls(或在我的视图或viewModel中)定义项目时遇到问题。可能是我对mvvm一无所知,但这是问题所在。 我将DataTemplate定义为
<DataTemplate>
<Expander>
<Expander.Header>
<StackPanel>
<TextBlock Margin="2" Text="{Binding Name}" />
<TextBlock>
<Hyperlink>
<Run Text="Delete group" />
</Hyperlink>
</TextBlock>
</StackPanel>
</Expander.Header>
<Expander.Content>
blah-blah-blah
</Expander.Content>
</Expander>
</DataTemplate>
我有很多扩展器,每个扩展器都有一个超链接。我希望超链接删除该组 - 即删除相应的Expander。我已经阅读过使用Visual和Logical - TreeHelper搜索DataTemplate,但这是解决我的问题的一种不好的方法 - 它不遵循mvvm。我知道我需要为超链接编写一个Commmand,但是如何检索我需要删除的Expander,并满足mvvm - 这就是问题所在。
任何建议,任何建议......
答案 0 :(得分:2)
但是,如果由于某些开发原因而无法创建static
ICommand
属性,则应使用RelativeSource
查找已将DataContext
设置为ViewModel的祖先,有这个命令。
<Hyperlink Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=ItemsControl},
Path=DataContext.DeleteFileGroup}"
CommandParameter="{Binding}">
<Run Text="Delete group"/>
</Hyperlink>
答案 1 :(得分:0)
所有我需要做的 - 是Craete STATIC ICommand属性,并使用以下代码
<Hyperlink Command="{x:Static vm:FileGroupViewModel.DeleteGroup}" CommandParameter="{Binding}">
<Run Text="Delete group"/>
</Hyperlink>