【问题标题】:Handle WPF button click and enable disable处理 WPF 按钮单击并启用禁用
【发布时间】:2013-04-17 18:36:48
【问题描述】:

我有一个带有一些控件的 UI。

  1. 最初当表单加载时,搜索按钮将被禁用,一旦所有 给出搜索条件,搜索按钮将被启用 自动。
  2. 点击搜索按钮,我想调用方法 使用 MVVM 模式并将结果绑定到网格中

XAML:

<Button Name="btnGetDetails" Content="Get Details" Grid.Row="2" Command="{Binding SearchCommand}"/>

模型、视图模型和 XAML 中需要哪些代码?

【问题讨论】:

  • 你遇到了什么问题?
  • @Trickery,说实话,问题是我不知道该怎么做,只知道 XAML 的样子,但不知道它在模型和视图模型中如何实现。搜索了一些文章,但没有得到好的链接....提前致谢。
  • 您在模型、视图模型和 XAML 中尝试过哪些代码?发布你所做的。
  • @BigDaddy,正如我在查询中提到的,我不知道模型、视图模型中会有什么代码,甚至一个示例也可以工作......我会明白的......你能不能帮助?类模型 { 公共字符串 A { 获取;放; } 公共字符串 B { 获取;放; } } 类视图模型 { }
  • @Amit WPFTutorial.net。 StackOverflow 不是教程。

标签: wpf mvvm


【解决方案1】:

仅当单击按钮时才会执行命令。如果您需要对按钮执行某些操作,那么您应该对包含该按钮的窗口执行此操作(假设您的按钮位于窗口中)。现在,如果您想坚持使用 MVVM 模式,那么您不应该使用 Window.OnLoaded,因为这会将代码放在您的代码后面。一种选择是使用您已单独下载的 System.Windows.Interactivity。这是它的样子:

<Window x:Class="..."
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:i="clr
        -namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding ...}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Window>

至于你的 Model、View 和 ViewModel 应该是什么,我认为你应该看看网上的一些教程。关于如何实现 MVVM 模式有一些很好的解释。我自己发现这个 youtube 视频信息量很大:

http://www.youtube.com/watch?v=EpGvqVtSYjs

【讨论】:

    【解决方案2】:

    这里有一些 MVVM 基础知识。你在正确的轨道上,只是错过了一步。您的视图模型中的 Command 实现应该(可能)接受两个输入:一个表示执行代码的 Action,以及一个返回 true/false 的谓词,判断您是否可以执行 Action 块中的代码。因此,在您的视图模型中,按照以下方式定义您的命令(注意:这是我的一个项目的示例):

    this.executeCommand = new RelayCommand(this.OnExecuteClicked, this.OnCanExecuteChanged);
    

    OnCanExecuteChanged 方法将根据您设置的任何条件返回一个布尔值。因此,如果您希望在正确设置属性 A 和属性 B 时启用提交按钮,则返回 true,否则返回 false。您的命令实现的内部工作将负责其余的工作。搜索 RelayCommand 实现(如果您还没有)或 DelegateCommand 以获取更多示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-01
      • 2023-03-14
      • 2017-01-03
      • 2011-02-01
      • 2015-04-19
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多