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