0
我有ListView控件,它在itemtemplate中有按鈕集合,並且想要處理ViewModel上每個按鈕的啓用和禁用。如何使用MVVM處理ListView的itemView中的按鈕的啓用/禁用?
我有ListView控件,它在itemtemplate中有按鈕集合,並且想要處理ViewModel上每個按鈕的啓用和禁用。如何使用MVVM處理ListView的itemView中的按鈕的啓用/禁用?
我最好的建議是:使用command(我一般用棱鏡的DelegateCommand
或DelegateCommand<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>
這是通過命令在MVVM結合處理。閱讀[本文的這一部分](http://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090030)。如果他們願意,有人可以在答案中進行闡述。 – Will 2012-01-17 14:19:20