【发布时间】:2015-03-29 20:33:40
【问题描述】:
我正在寻找一些关于如何在 WinRT 中创建自定义控件的教程,我有一个问题。
假设我想创建一个简单的控件,其中包含一些内容,例如左侧有一个图像和右侧有几个 TextBlock 的 Grid。
我的意思是,像这样简单的东西:
<Grid Height="100">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="0.7*"/>
</Grid.ColumnDefinitions>
<Image Source"/Assets/someRandomImage.png"/>
<StackPanel Grid.Column="1"
VerticalAlignment="Center">
<TextBlock Text="Some text"
Margin="10,0,10,0"
FontSize="24"
FontWeight="SemiLight"
TextTrimming="CharacterEllipsis"/>
<TextBlock Text="Some random description..."
Margin="10,5,10,0"
FontSize="18"
FontWeight="Light"
Foreground="Gray"
TextWrapping="Wrap"
TextTrimming="CharacterEllipsis"/>
</StackPanel>
</Grid>
我将创建一个包含此内容的 UserControl,这样我就可以在处理其 UI 时在 XAML 设计器中看到它,并且我会在后面的 UserControl 代码中添加所有 Properties 和 DependencyProperties。
然后我看到另一种方法是使用模板控件,所以我必须创建一个继承自 Control 类的类,然后使用上面的 XAML 代码作为模板并将其应用于自定义控件和在那里添加所有其余的逻辑。
当然,我还必须将 x:Name 属性添加到控件内的一些 UIElement 以便能够与它们交互,但你明白了。
我想知道,可以使用这两种方法中的一种,还是特别使用一种更好,为什么? 另外,我喜欢使用 UserControls,因为我可以在设计器窗口中看到它们,而我无法使用模板来执行此操作,我必须运行应用程序并创建控件的实例以查看它的内容实际上看起来像。
感谢您的帮助,我想我不是唯一一个有这个疑问的人,所以我希望这个问题也能帮助其他人:D
塞尔吉奥
【问题讨论】:
-
您是否向 UserControl 添加了功能?或者只是改变现有控件的显示方式?对于后者,即使是一个控制模板就足够了wpftutorial.net/templates.html
-
我添加功能:我通常为一些绑定创建一些属性、依赖属性以及可能的动画和其他东西。至于其他功能,我通常为 UserControl 创建一个 ViewModel,并使用它来添加方法和内部绑定。
-
还有一点需要注意——你可以在 VS 或 Blend 的设计视图中看到模板化控件,只要它们没有任何会破坏设计视图的逻辑。您只需在
UserControl/Page中使用您的控件实例,它就会显示出来。
标签: xaml windows-runtime uwp win-universal-app uwp-xaml