C# 如何从一个XAML对象值引用另一个XAML对象值?
XAML能够构建C#对象的树,就像在代码中一样;然而,尽管我可以毫无问题地实例化对象,但我仍然坚持使用将一个对象初始化为另一个对象的值的语法(如果这是可能的话) 为了说明,考虑下面的无意义的例子:C# 如何从一个XAML对象值引用另一个XAML对象值?,c#,xaml,C#,Xaml,XAML能够构建C#对象的树,就像在代码中一样;然而,尽管我可以毫无问题地实例化对象,但我仍然坚持使用将一个对象初始化为另一个对象的值的语法(如果这是可能的话) 为了说明,考虑下面的无意义的例子: <Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class=
<Application xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyClass">
<x:String x:Name="MyString">Hello</x:String>
<x:String x:Name="MyString2">STUCK FOR SYNTAX HERE</x:String>
你好
这里的语法卡住了
字符串被实例化。我可以在调试器中看到它们,我可以编写代码来操作它们,就像它们是普通的C#代码一样。我的问题是:我可以使用第一个字符串“Hello”的值初始化第二个字符串吗?或者,更一般地说,我可以从另一个XAML对象访问一个XAML对象的值吗
希望这有意义。您的代码片段无法编译。您的问题的答案是否定的,并且在这里有点冒险,但是您可能误用了XAML。正如Dennis在评论中所说,您应该使用数据绑定。与您尝试执行的操作最接近的操作是:
<Window ....
xmlns:sys="clr-namespace:System;assembly=mscorlib" >
<Window.Resources>
<system:String x:Key="MyString">Hello</system:String>
<system:String x:Key="MyString2">STUCK FOR SYNTAX HERE</system:String>
</Window.Resources>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} - {1}">
<Binding Source="{StaticResource MyString}" />
<Binding Source="{StaticResource MyString2}" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Window>
你好
这里的语法卡住了
下面的代码将在文本块中显示“Hello-Stick FOR SYNTAX HERE”
无法在XAML中压缩字符串的原因是,您实际上正在初始化一个不支持任何其他类型标记的
System.String
。这就是数据绑定的用途。但绑定是一个标记扩展,因此不能被视为“纯”XAML。谢谢您的评论。这让我意识到,我对纯XAML和标记扩展之间的区别并不清楚。更多阅读的时间到了…很抱歉代码没有编译。它在我的机器上出现了,但我在复制它时设法剪掉了一些。啊!我想我需要尝试想出一个更好的代码示例。我不想连接字符串。我只是觉得字符串可以成为我想要得到的最简单、最简短的例子。但是,正如您所说,字符串的问题在于它们不支持我正在尝试的初始化类型。我将尝试提出一个更好的例子。