首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用MVVM处理ListView项目模板中按钮的启用/禁用?

如何使用MVVM处理ListView项目模板中按钮的启用/禁用?
EN

Stack Overflow用户
提问于 2012-01-17 22:15:53
回答 1查看 682关注 0票数 0

我有一个ListView控件,它在itemtemplate中有按钮集合,并希望处理ViewModel上每个按钮的启用和禁用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-17 22:17:48

我最好的建议是:使用command (我通常使用Prism的DelegateCommandDelegateCommand,你可以通过NuGet下载Prism包,这会让它变得毫无痛苦)。

然后将按钮的命令绑定到该命令:

代码语言:javascript
运行
复制
<Button Command="{Binding MyCommand}" />

该命令的CanExecute方法将确定是启用还是禁用该按钮。

另一种方法是在ItemViewModel中公开一个IsEnabled属性,然后将按钮上的IsEnabled属性绑定到该属性。

如果您需要绑定到父ViewModel中的属性,您可以通过几种方法从模板中获取它。

下面是一些例子:

代码语言:javascript
运行
复制
<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>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8896100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档