gpt4 book ai didi

wpf - 用户控件的用途是什么?

转载 作者:行者123 更新时间:2023-12-03 00:52:38 24 4
gpt4 key购买 nike

为什么我们实际上需要用户控件?

窗口:

<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 是一组控件,组成一个可重用的控件组件。

您可以了解更多信息here ,和here .

关于wpf - 用户控件的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34002636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com