如何避免重复的XAML?

时间:2017-04-15 17:57:40

标签: c# wpf xaml

我目前正在使用WPF和C#创建简单的应用程序(作为学习练习)。我注意到我需要两个几乎相同的页面(相同的用户控件,相同的列表,相同的按钮方法等)。不同的是内容 - 不同的文字,标题,显示的图像 避免重复方法很容易 - 我只是创建一些抽象的基本页面,这两个页面将继承。但是,我如何避免重复基本上整个XAML代码?有没有办法以文明的方式解决它,或者我应该像洞穴人一样复制和粘贴它? 非常感谢!

1 个答案:

答案 0 :(得分:4)

<强> 1。创建UserControl并重复使用

您不必将所有内容直接放入窗口。而是创建一个UserControl并将类似的控件放在那里。然后,您可以通过更改DataContext或使用DependencyPropertys来区分不同的用例。我们假设您为UserControl MyUserControl命名。然后,您可以在窗口中包含它:

<local:MyUserControl x:Name="MemberNameCanBeAccessedInCodeBehind" />

<强> 2。重用代码隐藏

对于我而言,有关可重用性的一件大事令人大开眼界的事实是,XAML文件及其代码隐藏文件基本上是同一枚硬币的两面。让我们回到MyUserControl。在XAML文件中,您有:

<UserControl x:Class="MyUserControl" ...

在代码隐藏中你有:

public partial class MyUserControl : UserControl

事情是:你不必从UserControl继承!如果您有一些代码隐藏功能,如键绑定或事件处理程序,您可以通过创建自己的自定义UserControl类来重用它们:

public class MyUserControlClass : UserControl
{
    // Everything that you want to reuse!
}

现在您只需用UserControl替换XAML中的MyUserControlClass和代码隐藏,就可以使用该功能:

<local:MyUserControlClass x:Class="MyUserControl" ...

public partial class MyUserControl : MyUserControlClass

XAML窗口最初可能会显示错误,但是在编译时它会起作用。