WPF 4.0上使用MVVM模式的可编辑ItemsControl DataTemplate

3
我有一个问题,无法定义我的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>

我有很多可扩展项,每个都有一个超链接。我想要通过超链接删除该组 - 即删除相应的可扩展项。我已经了解了使用 DataTemplate 和 Visual/Logical-TreeHelper 进行搜索的方法,但这不是解决我的问题的好方法 - 它不符合 mvvm。我知道我需要为超链接编写一个命令,但如何检索需要删除的可扩展项,并满足 mvvm - 这就是问题所在。
任何建议,任何建议...
2个回答

2

但是,如果由于某些开发原因而无法创建静态的 ICommand 属性,您应该使用 RelativeSource 查找祖先,其中具有设置为此命令的 ViewModel 的 DataContext

<Hyperlink Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 
                                              AncestorType=ItemsControl}, 
                    Path=DataContext.DeleteFileGroup}" 
           CommandParameter="{Binding}">
              <Run Text="Delete group"/>
</Hyperlink>

0
我所需要做的就是创建一个静态ICommand属性,并使用以下代码。
<Hyperlink Command="{x:Static vm:FileGroupViewModel.DeleteGroup}" CommandParameter="{Binding}">
    <Run Text="Delete group"/>
</Hyperlink>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接