我正在使用ListView控件,该控件在itemtemplate中有按钮集合,并希望处理ViewModel上每个按钮的启用和禁用。
答案 0 :(得分:2)
我最好的建议是:使用command(我通常使用Prism的DelegateCommand
或DelegateCommand<T>
,您可以通过NuGet下载Prism包,这使得它几乎无痛)
然后将按钮的命令绑定到命令:
<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>