2

我是 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文本框中的字符串时,我的代码中的任何地方都会毫无例外地发生变化。

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

4

3 回答 3

3

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

您可以参考此网页了解更多详情。

于 2013-07-25T13:02:31.307 回答
1

您几乎涵盖了每种方法的所有优点和缺点。使用绑定,对代码中文本的更改可以在 UI 中自动更新,反之亦然。正如其他人所说,如果您想使用视图模型,那么第二个选项会更可取,但除非您需要严格遵守 MVVM 原则,否则您始终可以根据需要进行混合和匹配。也就是说,它会使你的代码对你自己和其他人感到困惑,所以最好选择一种风格并坚持下去。

于 2013-07-25T13:26:36.147 回答
1

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

如果您正在处理一个更大的项目,我相信您会发现使用绑定和 MVVM 模式的许多优势。如果您不了解 MVVM,您将看到使用绑定将使您自动成长为模式。

但是,嘿...我相信这是一个见仁见智的问题

于 2013-07-25T13:11:19.850 回答