【问题标题】:Can I make something like variables in XAML我可以在 XAML 中创建类似变量的东西吗
【发布时间】:2015-02-08 23:35:07
【问题描述】:

就 XAML 而言,我是菜鸟。所以,如果我问愚蠢的问题,请多多包涵。我会尽力解释我想要什么,所以如果可以的话,请帮助我。 Atm 我有很多 TextBlocks 的代码,比如说 20,我想将所有这些文本更改为 0,Text = "0"。 atm 我手动做所有这些,我觉得很愚蠢。在 C# 中我可以这样做

private string name = "0";

在整个程序中,每个名字都是“0” 我可以在 XAML 中做到这一点,所以我不必手动执行每个名称。同样的问题也适用于 Margin 等。

谢谢,如果我解释得不好,请见谅。

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    有几种方法可以处理您的请求。您可能正在寻找Styles

    XAML

    <Window.Resources>
      <Style TargetType='TextBox'>
        <Setter Property='Text'
                Value='Example' />
        <Setter Property='Margin' Value='10,5'/>
      </Style>
    </Window.Resources>
      <StackPanel>
        <TextBox />
        <TextBox />
        <TextBox />
      </StackPanel>
    

    截图

    [编辑] 另一种方法是 DevEstacion 提供的方法。在 XAML 的资源部分中声明变量值。然后使用 StaticResource 标记扩展将值应用到元素属性。

    【讨论】:

    • 也可以使用TargetType={x:Type TextBlock}。由于 type-As-string 有额外的开销,这在here 进行了解释。
    • 我喜欢风格的感觉,我已经阅读了 MSDN 上的文档。到目前为止,我只使用基本的 XAML 代码。无论我尝试做什么,它都会说“属性内容设置不止一次”。我想这是一个非常愚蠢的问题,但你能告诉我如何在我的代码中实现样式吗?
    • 样式通常在 XAML 中使用,在代码中较少使用。
    【解决方案2】:

    首先您需要在 XAML 文件中添加一个引用。

    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    

    像这样创建对象

    <sys:String x:Key="textboxValue">0</sys:String>
    

    并在 xaml 文件中的对象中使用它。

    <TextBox Text="{StaticResource textboxValue}" />
    

    【讨论】:

      【解决方案3】:

      您可以在后面的代码中为文本框的 Loaded 事件分配值。

      【讨论】:

      • 我正在阅读他的问题的上下文/意图,而不仅仅是主题。因此,根据他的问题的上下文,我的回答仍然有效。 “所以我不必每次都手动进行”。现在把你扣掉的积分还给我。
      猜你喜欢
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多