【问题标题】:What Binding mode should we specify for Command binding for optimization?我们应该为命令绑定指定什么绑定模式以进行优化?
【发布时间】:2019-06-12 12:49:06
【问题描述】:

我正在尝试优化 XAML 代码,以便为 XAML 中的所有绑定提供准确的绑定模式,但找不到合适的绑定模式,据我说我认为绑定模式应该是“OneWayToSource”,建议使用适当的绑定模式。

<RadButton x:Name="btnClose" Command="{Binding CloseCommand, Mode=?}"/>

【问题讨论】:

  • 完全没有,如果足够的话,默认的 OneWay。仅在必要时通过设置绑定模式来“优化”您的 XAML。
  • @jjTudu According to the documentation, OneWayToSource 会将命令从RadButton 复制到视图模型。如果您有相反的信息,我强烈建议您联系 Microsoft。
  • “过早的优化是万恶之源”
  • 仅当默认值不够时,所以几乎没有。对于大多数属性,默认值涵盖标准用例。例如默认情况下,TwoWay 用于 TextBox 的 Text 属性。当然,OneWay 也适用于目标对象从未设置的所有属性,例如 Button 的 Command 属性。在理想主义的 WPF 应用程序中,您可能找不到显式设置其模式的单个 Binding。
  • 因此,要求在 WPF 应用程序中明确指定所有绑定模式的要求是无稽之谈。

标签: wpf xaml mvvm


【解决方案1】:

假设 CloseCommand 属性值是静态的,在 ViewModel 的构造函数中设置后,Mode=OneTime 的效率会稍微高一些,因为绑定不包括任何对未来更新的检查。

但是,正如其他人所指出的,为每个绑定指定模式的要求是完全容易的。 DependencyProperty 定义中指定的默认绑定模式应涵盖 99% 的情况。

【讨论】:

    【解决方案2】:

    在您的视图模型中,

    public DelegateCommand CloseCommand { get; }
    

    在构造函数中

    CloseCommand = new DelegateCommand(closeCommand);
    

    然后添加函数

    private void closeCommand()
    {
        //Do Something
    }
    

    【讨论】:

    • 我问了什么,你想解释什么?
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 2014-08-13
    • 2013-05-29
    • 1970-01-01
    • 2013-02-12
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多