繁体   English   中英

在WPF中,应通过名称或使用绑定来更改属性

[英]In WPF, a property should be changed by its name or by use of binding

我是WPF的新手,我在开发应用程序时想到了一个问题。 假设我有一个如下定义的文本框

<TextBox x:Name="MyTextBox" />

然后在我的C#代码中,可以使用以下命令更改此文本框中显示的字符串

MyTextBox.Text = "Hello!";

但是,还有一种方法可以通过使用绑定在XAML中具有相同行为的方式

<TextBox x:Name="MyTextBox" Text="{Binding Content}" />

在C#中,

public class MyText : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private string _content;
    public string Content
    {
        get { return _content; }
        set
        {
            _content = value;
            PropertyChanged(this, new PropertyChangedEventArgs("Content"));
        }
    }
}

MyText txt = new MyText();
MyTextBox.DataContext = txt;
txt.Content = "Hello!";

显然,第二个选项需要更多的编码,但是两者的结果是相同的。 但是,在第二种情况下,我不必担心在UI线程上执行代码。 因此,当我更改txt.Content时,代码中的任何地方都会无变化地更改文本框中的字符串。

我的问题是:更改属性是否对这两个选项中的任何一个有设计问题偏好?

第二个选项是采用MVVM模式的前提条件。 在第一种选择中,没有去耦; 每个操作都在视图中进行。 但是,如果您更喜欢section选项并应用MVVM模式,则将有两个不同的类。 一种用于仅实现UI(即View),另一种用于抽象化View和Model。

您可以参考此网页以获取更多详细信息。

取决于您正在处理的项目类型。 如果这是一个非常小的项目,我相信您可以通过代码使用直接分配。 它做事的快捷方式。 但是,嘿...如果有效..有效 :)

如果您正在从事更大的项目,我相信您会发现使用绑定和MVVM模式有很多好处。 如果您不了解MVVM,将会看到使用绑定将使您自动成长为模式。

嘿...我相信这是个见解

您几乎涵盖了每种方法的利弊。 使用绑定,可以在UI中自动更新对代码中文本的更改,反之亦然。 就像别人说的那样,如果您想使用视图模型,那么第二个选项将是更可取的,但是除非您必须严格遵守MVVM原则,否则您始终可以根据自己的喜好混合和匹配。 也就是说,它会使您的代码与您自己和其他人混淆,因此最好只选择一种样式并坚持使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM