在WPF中扩展用户控件

Til*_*via 9 wpf user-controls

我像往常一样构建了一个用户控件,它由XAML部分和代码隐藏部分组成.现在,我需要创建另一个用户控件,它共享前者的一些功能,但它们具有不同的外观,并且可能在代码隐藏中具有其他功能.

我的第一个想法是创建一个接口来收集两种控件的常用功能.这是正确的方法吗?我将如何管理我应该拥有的不同XAML部件?欢迎任何建议.

Til*_*via 8

我想补充一点其他的贡献,我认为可能对遇到同样情况的其他人有用.

另一种可能的解决方案,在我看来,如果您要创建的控件不是特别复杂,则适合创建一个包含您想要共享的常用功能的基本用户控件:这种控件将完全用C#编写.实际上,这允许在由XAML和后面的代码组成的用户控件中继承.在继承控件的XAML中,而不是具有

<UserControl> ... </UserControl>
Run Code Online (Sandbox Code Playgroud)

你将会有

<MyProject: MyBaseControl x:Class="MyProject.MyExtendedControl"> ... </MyProject: MyBaseControl>
Run Code Online (Sandbox Code Playgroud)

然后在后面的代码中你还需要指定以下内容:

class MyExtendedControl : MyBaseControl
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.