adm*_*tDK 12 wpf xaml user-controls
为什么我们真的需要用户控件?
窗口:
<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>
Run Code Online (Sandbox Code Playgroud)
用户控制:
<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>
Run Code Online (Sandbox Code Playgroud)
代码背后:
public partial class SaveCloseUserControl : UserControl
{
public SaveCloseUserControl()
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何理由为什么我应该在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>
Run Code Online (Sandbox Code Playgroud)
没有用户控制的堆栈面板:
<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>
Run Code Online (Sandbox Code Playgroud)
代码背后:
public partial class SaveCloseUserControl : StackPanel
{
public SaveCloseUserControl()
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在使用UserControls,但是现在当我想到它时,除了包装一个项目之外,它们什么都不做.所以我尝试了10个不同的视图,无论它是什么,我能够将UserControl替换为其他项目(Grid,ComboBox,GroupBox等),并且它们的工作方式完全相同.所以要清楚,如果我有一个用户控件,其中第一件事是ComboBox,那么我删除了UserControl并将ComboBox放在其位置.内部的所有内容都保持不变,就像上面的StackPanel示例一样.
为什么我甚至不打扰UserControl,如果它没有做任何事情,还有另一个项目要创建和渲染?
Mik*_*son 14
的目的UserControl是要组一组控制成一个,可重复使用的部件.它们不能被设计或模板化.
a的目的Custom Control是扩展现有控件,或创建全新控件.这些,而不是一个UserControl 可以设计和模板化.
我觉得你和这两个人搞混了.
所以,你可能想知道,"我UserControl什么时候应该使用a,Custom Control什么时候应该使用?" 这个问题的答案取决于它.
UserControl当您需要创建一个逻辑控件组时,您应该使用a ,这些控件以某种方式交互以创建几乎复合控件.如果Custom Control要向现有控件添加功能,则应使用a .
在您的示例中,您最好的方法是使用a UserControl,因为您StackPanel是一组控件组成一个可重用组件.
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |