猿问

如何在 XAML 中重复编程行?

...术语“编程行”是指代码的一部分。

我目前正在使用 c# 和 XAML 创建 UI。但 XAML 代码变得越来越长,因此我意识到,如果我能够以某种方式在代码内部设置或单独存储代码的可重复部分并在每次需要时使用它们,则整个 XAML 代码将会更短、更清晰。

例如,假设我有一个特定的标签,我想在代码的几个点中重复该标签:

  <Label Name="myLabel" Content="something">
  </Label>

我如何才能在 XAML 代码中应用并重复该标签?


斯蒂芬大帝
浏览 84回答 1
1回答

蝴蝶刀刀

有一个简单的示例,说明如何在不同的视图/窗口之间共享 XAML 代码。创建一个ResourceDictionary,定义共享属性/样式/控件模板,如下所示<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">    <Style TargetType="{x:Type Label}">        <Setter Property="Foreground" Value="Black" />        <Setter Property="FontFamily" Value="Segoe UI" />    </Style>    <Style TargetType="{x:Type Button}">        <Setter Property="Foreground" Value="Black" />        <Setter Property="FontFamily" Value="Segoe UI" />    </Style>    <Style TargetType="{x:Type TextBox}">        <Setter Property="Foreground" Value="Black" />        <Setter Property="FontFamily" Value="Segoe UI" />    </Style>    <Style TargetType="{x:Type ScrollBar}">        <Setter Property="Foreground" Value="Black" />        <Setter Property="FontFamily" Value="Segoe UI" />    </Style>    <Style TargetType="Label" x:Key="TitleStyle" BasedOn="{StaticResource {x:Type Label}}">        <Setter Property="HorizontalContentAlignment" Value="Center"/>        <Setter Property="VerticalContentAlignment" Value="Center" />        <Setter Property="HorizontalAlignment" Value="Stretch" />        <Setter Property="VerticalAlignment" Value="Stretch"/>        <Setter Property="FontSize" Value="16" />    </Style></ResourceDictionary>您可以将此字典添加到应用程序/窗口MergedDictionaries来使用它们,例如<Window.Resources>    <ResourceDictionary>        <ResourceDictionary.MergedDictionaries>            <ResourceDictionary Source="Styles.xaml"/>        </ResourceDictionary.MergedDictionaries>    </ResourceDictionary></Window.Resources>请注意,这只是一个简单的例子来简要解释这个想法。您还可以查看Style.TargetType文档以查看样式之间TargetType和x:Key样式中的解释
随时随地看视频慕课网APP
我要回答