是否真的可以将xaml和代码分开?

时间:2015-01-29 19:04:42

标签: c# wpf xaml

我是wpf的新手,有些东西我不明白...... 我正在阅读关于代码和UI分离的所有内容。那么它应该如何工作,即使我可以设计混合的一切,我的代码背后总是对变化作出反应并改变其他情况下的可见性......所以首先没有控件的名称,背后的代码赢了'编译......即使我有名字,是不是很难协调这个?

3 个答案:

答案 0 :(得分:2)

在"代码和UI的分离"在讨论中,您不能将 Xaml 与Code-Behind分开。相反,您将逻辑与Xaml分离,因此,将逻辑 Code-Behind 分开。

构建Xaml控件时,不仅xaml" view"构造,但也是初始化控件的支持部分类。因此,您始终拥有代码隐藏。它是Xaml工作原理的基本组成部分。

答案 1 :(得分:2)

您所描述的是WinForms的一种典型方法,因为应用程序由连接到特定控件的事件驱动,因此无法实现UI和逻辑的真正分离。

但是,在WPF中,您不使用(或不必使用)事件来进行UI与应用程序逻辑之间的通信。值得为您调查的主要领域是:

非常广泛的概述是XAML描述了布局并指定了布局应从何处获取数据。数据上下文中存在正确的数据,WPF引擎负责所有连线(或绑定)。

<TextBlock Text="{Binding Caption}" />

例如,在上面的代码中,Text中的TextBlock将填充存储在数据上下文中的Caption属性中的值。 (通常在用户控件或用户窗口的级别指定数据上下文。) 在后面的代码中,没有任何与TextBlock相关的内容或用值填充它。

您将在后面的代码中找到的内容通常只是初始化DataContext

public partial class MyUiClass
{
    public MyUiClass()
    {
        this.Loaded += (sender, e) => { this.DataContext = new MyViewModelClass(); }
    }
}

所有数据都存储在类集中作为数据上下文(上例中的MyViewModelClass)。

作为下一步,我建议您阅读一些MVVM教程(YouTube上有很多好的教程)。

答案 2 :(得分:1)

你所谈论的建筑有些不对劲。 模型数据中不需要控件名称。模型数据与之交互的唯一事物是事件/命令。通过这种方式,您可以在表示和数据之间进行分离,其中模型视图是这两者之间的桥梁。