Начните с создания трех файлов, сначала файл «code-behind» .cs создается как простой класс: -
public class MyCommonUserControl : UserControl
{
}
Обратите внимание, что нет звонка InitializeComponent
.
Теперь создайте новый UserControl
, затем измените его xaml, чтобы он выглядел так: -
<local:MyCommonUserControl x:Class="YourApp.FirstMyCommonUserControl "
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:YourApp"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
</Grid>
</local:MyCommonUserControl >
Обратите внимание на добавление псевдонима xmlns:local
, указывающего на пространство имен вашего приложения, а затем изменение тега UserControl
на базовый элемент управления, который нам действительно нужен.
Вы бы изменили .xaml.cs на это: -
public partial class FirstMyCommonUserControl : MyCommonUserControl
{
public FirstMyCommonUserControl()
{
InitializeComponent();
}
}
Это все, что должен содержать .xaml.cs.
Затем вы можете повторить это для SecondMyCommonUserControl
и так далее. Поместите весь общий код в базовый класс MyCommonUserControl
.
Жаль, что MS не ожидал этого в первую очередь, добавив пустой виртуальный метод InitializeComponent к базовому UserControl
и имея автоматически сгенерированный код .gics override
, который означал бы, что мы могли в этих случаях обходитесь без этого лишнего файла .xaml.cs.