为什么我们实际上需要用户控件?
窗口:
<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();
}
}
我一直在到处使用 UserControls,但现在当我想到它时,除了将项目包装在其中之外,它们没有做任何事情。因此,我在 10 个不同的 View 上进行了尝试,无论它是什么,我都可以用其他项目(Grid、ComboBox、GroupBox 等)替换 UserControl,并且它们的工作方式完全相同。因此,需要明确的是,如果我有一个用户控件,并且其中的第一个元素是 ComboBox,那么我会删除 UserControl 并将 ComboBox 放在其位置上。然后里面的所有内容都保持原样,就像上面的 StackPanel 示例一样。
为什么我还要费心使用 UserControl,并且如果它不执行任何操作,还要创建和呈现另一个项目?
最佳答案
UserControl
的目的是将一组控件分组到一个可重用的组件中。它们不能被设计样式或模板化。
自定义控件
的目的是扩展现有控件,或创建全新的控件。与 UserControl
不同,它们可以进行样式化和模板化。
我认为你把两者混淆了。
因此,您可能想知道,“我什么时候应该使用 UserControl
以及什么时候应该使用 自定义控件
?”答案是这取决于情况。
当您需要创建一组逻辑控件,这些控件以某种方式交互以创建几乎复合控件时,您应该使用UserControl
。当您想要向现有控件添加功能时,您应该使用自定义控件
。
在您的示例中,最好的方法是使用 UserControl
,因为您的 StackPanel
是一组控件,组成一个可重用的控件组件。
关于wpf - 用户控件的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34002636/