为什么我们实际上需要一个用户控件?
窗口:
窗口:
<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();
}
}
如果以下代码没有使用UserControl也能达到同样的效果,我就看不出为什么要将StackPanel(或任何其他控件)包装在UserControl中。
窗口:
<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();
}
}
我一直在使用用户控件,但现在我想起来它们除了将一个项目包装起来之外并没有做什么。所以我在10个不同的视图上尝试了它,无论是什么,我都能用其他项目(Grid、ComboBox、GroupBox等)代替用户控件,而且它们的工作方式完全相同。所以明确一下,如果我的用户控件中第一项是ComboBox,那么我删除用户控件并将ComboBox放在原处,里面的所有东西都会保持不变,就像上面的StackPanel示例一样。
既然用户控件没有任何作用,为什么我还要费心去创建和渲染另一个项目呢?
<wpfApplication1:SaveCloseStackPanel />
,但是<StackPanel x:Class="WpfApplication1.SaveCloseUserControl" …>
和public partial class SaveCloseUserControl : StackPanel
。我猜所有的都应该是SaveCloseStackPanel
。 - Palec