Зачем нам нужен пользовательский контроль?
Window:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication1="clr-namespace:WpfApplication1">
<wpfApplication1:SaveCloseUserControl />
</Window>
Пользовательский контроль:
<UserControl x:Class="WpfApplication1.SaveCloseUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Orientation="Horizontal">
<Button Height="30" Content="Save" />
<Button Height="30"
Margin="1"
Content="Cancel" />
</StackPanel>
</UserControl>
Код позади:
public partial class SaveCloseUserControl : UserControl
{
public SaveCloseUserControl()
{
InitializeComponent();
}
}
Я не вижу причин, по которым я должен обернуть StackPanel (или любой другой элемент управления) внутри UserControl, если следующий код без UserControl будет делать то же самое.
Window:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:wpfApplication1="clr-namespace:WpfApplication1">
<wpfApplication1:SaveCloseStackPanel />
</Window>
Панель стека без пользовательского управления:
<StackPanel x:Class="WpfApplication1.SaveCloseUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Orientation="Horizontal">
<Button Height="30" Content="Save" />
<Button Height="30"
Margin="1"
Content="Cancel" />
</StackPanel>
Код позади:
public partial class SaveCloseUserControl : StackPanel
{
public SaveCloseUserControl()
{
InitializeComponent();
}
}
Я использую UserControls везде, но теперь, когда я думаю об этом, они не делают ничего, кроме того, что он обертывает элемент. Поэтому я попробовал это на 10 разных представлениях, и не имеет значения, что это такое, я смог заменить UserControl другими элементами (Grid, ComboBox, GroupBox и т.д.), И все работает точно так же. Поэтому, чтобы быть ясным, если у меня был пользовательский контроль, и первым делом в нем был ComboBox, я удалил UserControl и поставил ComboBox на свое место. Внутри все оставалось, как и в предыдущем примере, с помощью StackPanel.
Почему я даже беспокоюсь с UserControl и должен быть создан и отображен другой элемент, если он ничего не делает?