在 WinForms 中,当创建一个元素时,我们可以简单地点击它——工作室为这个元素创建了一个事件处理程序,例如
private void Button1_Click(object sender, RoutedEventArgs e)
{
}
进入就够了
Button1.Text = "Поменяли текст кнопки"
一切都会奏效。但是在 UWP 应用程序中,当您单击同一个按钮时,工作室会创建相同的处理程序,但已经调用它
private void Button_Click(object sender, RoutedEventArgs e)
{
}
现在也不可能以任何方式处理界面的元素。是否可以在 Xaml 本身中写一个名称(默认情况下不存在)并已经引用它
<Button Content="Button" **Name="btn1"** HorizontalAlignment="Left" Margin="177,85,0,0" VerticalAlignment="Top" Height="123" Width="264" Click="Button_Click"/>
此外,按钮本身没有文本属性。甚至还有
btn1.FontSize
而且没有文字。一般来说,请向那些正在从 WinForms 过渡的人解释一下 - 为什么要删除这些东西,以及它们用什么代替?
范式完全不同——它是思想的发展
WPF。你需要学习这种模式MVVM——没有它,一切都是悲伤的。与显示相关的所有内容都是用 xaml 编写的,同一个按钮本质上是一个容器,您可以在其中塞入更多元素 - 是的,您甚至可以在按钮内塞入一个按钮,直到变成蓝色,您需要放入相同的文本TextBlock:您可以将其从代码中推送到属性中
Content- 但您不需要这样做,因为它View完全是通过声明性 xaml 标记设置的。原则上,它也可以用旧的方式,但正如您所注意到的,您需要对元素强制命名,您仍然无法摆脱对xaml标记的研究——这条路将是棘手的,而且通常毫无意义。这就是WPF相对于WindowsForm. 在一个范例MVVM中,很少需要元素名称 - 具有映射的代码通过绑定和命令相对松散地耦合。特别是,这使得不同的人可以轻松地处理 UI 和业务逻辑,而无需真正交叉。嗯,易于测试也是一个巨大的优势。