2011-06-27 40 views
3

我有我的ItemsControls(或我的視圖或viewModel)中定義項目的問題。可能是我不知道mvvm的一些事情,但這裏是個問題。 我已經DataTemplate中定義爲WPF 4.0上的MVVM模式的可編輯ItemsControl 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> 

我有很多擴展器的,他們每個人都有一個超鏈接。我希望超鏈接刪除組 - 即刪除相應的擴展器。我已經閱讀了關於使用Visual和Logical - TreeHelper在DataTemplate上搜索,但這是解決我的問題的不好方法 - 它不遵循mvvm。我知道我需要爲超鏈接編寫一個Commmand,但是我怎樣才能檢索到需要刪除的Expander,並且滿足mvvm--這就是問題所在。

任何意見,任何建議...

回答

2

但是,如果你不能創造staticICommand屬性由於某些開發原因,您應該使用RelativeSource查找祖先,其中DataContext設置爲ViewModel,它具有此命令。

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

所有我需要做的 - 是STATIC瞭解創建屬性的ICommand和使用下面的代碼

<Hyperlink Command="{x:Static vm:FileGroupViewModel.DeleteGroup}" CommandParameter="{Binding}"> 
    <Run Text="Delete group"/> 
</Hyperlink>