我是wpf的新手,有些东西我不明白...... 我正在阅读关于代码和UI分离的所有内容。那么它应该如何工作,即使我可以设计混合的一切,我的代码背后总是对变化作出反应并改变其他情况下的可见性......所以首先没有控件的名称,背后的代码赢了'编译......即使我有名字,是不是很难协调这个?
答案 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)
你所谈论的建筑有些不对劲。 模型数据中不需要控件名称。模型数据与之交互的唯一事物是事件/命令。通过这种方式,您可以在表示和数据之间进行分离,其中模型视图是这两者之间的桥梁。