我有一个ListView控件,它在itemtemplate中有按钮集合,并希望处理ViewModel上每个按钮的启用和禁用。
发布于 2012-01-17 22:17:48
我最好的建议是:使用command (我通常使用Prism的DelegateCommand或DelegateCommand,你可以通过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>https://stackoverflow.com/questions/8896100
复制相似问题