如何在XAML中的两个位置使用资源数据值?

时间:2015-12-01 18:09:58

标签: xaml win-universal-app uwp

我希望将相同的文字显示为Button的工具提示和TextBlock的文字。这是我简化的xaml:

<Button x:Uid="SweetButton">
  <TextBlock x:Uid="SweetTextBlock"/>
</Button>

现在我的.resw文件中有两个条目:

<data name="SweetButton.ToolTipService.ToolTip" xml:space="preserve">
  <value>The same text</value>
</data>
<data name="SweetTextBlock.Text" xml:space="preserve">
  <value>The same text</value>
</data>

有没有办法在我的.resw文件中只有一个条目?

我尝试过为数据元素提供两个名称属性,但这是不允许的。我想到某种方式引用一个数据元素的值作为第二个数据元素的值,但我不确定如何。

1 个答案:

答案 0 :(得分:1)

遗憾的是,当您尝试填写2个完整的不同属性(x:UidToolTip)时,仍然无法使用Text语法重新使用该资源条目。具有x:Uid的通用资源系统非常强大,可以在资源文件中包含任何附加属性,但缺点是资源值的可重复性。

  

UWP XAML对x:Uid唯一性的规则与先前使用的XAML利用技术有所不同。对于UWP XAML,相同的x:Uid ID值作为多个XAML元素的指令存在是合法的。但是,每个此类元素在解析资源文件中的资源时必须共享相同的解析逻辑。此外,项目中的所有XAML文件共享一个资源范围,用于x:Uid解析,没有x:Uid范围与各个XAML文件对齐的概念。

来源:https://msdn.microsoft.com/en-us/library/windows/apps/mt204791.aspx

如果你有很多重复的资源值,你可以考虑使用一种“旧的”方法来处理资源并自己绑定资源。