2012-01-17 55 views
0

我有ListView控件,它在itemtemplate中有按鈕集合,並且想要處理ViewModel上每個按鈕的啓用和禁用。如何使用MVVM處理ListView的itemView中的按鈕的啓用/禁用?

+1

這是通過命令在MVVM結合處理。閱讀[本文的這一部分](http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090030)。如果他們願意,有人可以在答案中進行闡述。 – Will 2012-01-17 14:19:20

回答

2

我最好的建議是:使用command(我一般用棱鏡的DelegateCommandDelegateCommand<T>,您可以通過下載的NuGet 包,這使得它的字面無痛)。

你那麼你的按鈕的命令綁定到的命令:

<Button Command="{Binding MyCommand}" /> 

命令的CanExecute方法將確定按鈕將被啓用或禁用。

另一種方法是在ItemViewModel中公開IsEnabled屬性,然後將按鈕上的IsEnabled屬性綁定到它。

如果您需要綁定到父ViewModel中的某個屬性,則可以通過幾種方法從模板中獲取該屬性。

下面是一些:

<UserControl x:Class="MyControl" x:Name="this" ...> 

<...> 
    <DataTemplate> 
    <Grid> 
     <Button 
     IsEnabled="{Binding DataContext.IsEnabled, ElementName=this}"/> 
     <Button 
     IsEnabled="{Binding DataContext.IsEnabled, 
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MyControl}}}" 
    </Grid> 
    </DataTemplate> 
</...> 
</UserControl>