Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否真的可以将xaml和代码分离?_C#_Wpf_Xaml - Fatal编程技术网

C# 是否真的可以将xaml和代码分离?

C# 是否真的可以将xaml和代码分离?,c#,wpf,xaml,C#,Wpf,Xaml,我是wpf的新手,有些事情我不明白。。 我到处都在读关于代码和UI分离的书。那么它应该如何工作呢?即使我可以在blend中设计所有东西,我的代码也总是会在其他情况下对更改和更改可见性做出反应。。。因此,如果没有控件的名称,后面的代码将无法编译。。。即使我有名字,协调这一点不是很不可能吗?你所说的架构有问题。 模型数据中不需要控件的名称。模型数据唯一与之交互的是事件/命令。通过这种方式,您可以将表示和数据分离开来,而模型视图是这两者之间的桥梁。您所谈论的体系结构中存在一些错误。 模型数据中不需要控

我是wpf的新手,有些事情我不明白。。
我到处都在读关于代码和UI分离的书。那么它应该如何工作呢?即使我可以在blend中设计所有东西,我的代码也总是会在其他情况下对更改和更改可见性做出反应。。。因此,如果没有控件的名称,后面的代码将无法编译。。。即使我有名字,协调这一点不是很不可能吗?

你所说的架构有问题。
模型数据中不需要控件的名称。模型数据唯一与之交互的是事件/命令。通过这种方式,您可以将表示和数据分离开来,而模型视图是这两者之间的桥梁。

您所谈论的体系结构中存在一些错误。 模型数据中不需要控件的名称。模型数据唯一与之交互的是事件/命令。通过这种方式,您可以在表示和数据之间进行分离,而模型视图是这两者之间的桥梁。

在“代码和UI分离”讨论的上下文中,您没有将Xaml与后面的代码分离。相反,您将逻辑与Xaml分离,因此,也将逻辑与代码分离

构造Xaml控件时,不仅要构造Xaml“视图”,还要构造初始化控件的支持部分类。因此,您总是有一个代码隐藏。这是Xaml工作原理的一个基本部分。

在“代码和UI分离”讨论的上下文中,您没有将Xaml与后面的代码分离。相反,您将逻辑与Xaml分离,因此,也将逻辑与代码分离


构造Xaml控件时,不仅要构造Xaml“视图”,还要构造初始化控件的支持部分类。因此,您总是有一个代码隐藏。这是Xaml工作原理的一个基本部分。

您所描述的是WinForms的典型方法,在WinForms中,实现UI和逻辑的真正分离是不可能的,因为应用程序是由连接到特定控件的事件驱动的

但是,在WPF中,用户界面和应用程序逻辑之间的通信不使用(或不必使用)事件。值得您调查的主要领域有:

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

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


作为下一步,我建议浏览一些MVVM教程(YouTube上有很多不错的教程)

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

但是,在WPF中,用户界面和应用程序逻辑之间的通信不使用(或不必使用)事件。值得您调查的主要领域有:

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

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


作为下一步,我建议浏览一些MVVM教程(YouTube上有很多不错的教程)

如果要命名控件,…,请仔细阅读主题“MVVM”。。。。如果您正在命名一个控件,…,那么您可能做得不对,请仔细阅读主题“MVVM”。。。。你可能做错了好吧,我现在告诉你,你不必像在windowsforms或ASP.net中那样提供ID或名称。。但是假设你有一个应用程序,你正在等待来自服务器的消息,并且在每种消息类型上你都必须改变视觉设计。。。您必须从代码隐藏中访问控件,以及如何在没有名称的情况下访问控件?谢谢你的回答!不,你不需要。您可以定义UI模板,并根据模型的状态对其进行编排。您收到了关于模型更改的信号,您更改了一些变量并将信号返回到ui。UI通过更改UI外观并将加载的数据映射到控件来响应该信号。@Franki1986:为您提供一些基本的起点:好的,我现在您不必像在windowsforms或ASP.net中那样给出ID或名称。。但是假设你有一个应用程序,你正在等待来自服务器的消息,并且在每种消息类型上你都必须改变视觉设计。。。您必须从代码隐藏中访问控件,以及如何在没有名称的情况下访问控件?谢谢你的回答!不,你不需要。您可以定义UI模板,并根据模型的状态对其进行编排。您收到了关于模型更改的信号,您更改了一些变量并将信号返回到ui。UI通过改变UI外观并将加载的数据映射到控件来响应该信号。@Franki1986:为您提供一些基本的起点:好的,谢谢大家提供的信息!我写了很多文章,但有时通过一个简短的对话获取信息,改变观点!没问题。这就是为什么我建议你在YouTube上搜索一些教程。您可以一步一步地跟随它,然后您可以看到代码是如何从一个步骤转到另一个步骤的。在书面教程中,如果您对某项特定技术完全陌生,您可能会在两个步骤之间迷失方向,因为代码可能会动态变化而无法遵循。今天晚些时候我将尝试挖掘一些好的链接。这个系列对初学者来说非常好:好的,谢谢大家提供的信息!我写了很多文章,但有时通过一个简短的对话获取信息,改变了
<TextBlock Text="{Binding Caption}" />
public partial class MyUiClass
{
    public MyUiClass()
    {
        this.Loaded += (sender, e) => { this.DataContext = new MyViewModelClass(); }
    }
}