也许这是显而易见的事,但这就是我所拥有的。我需要在XAML中编写一个字符串。没关系,但是如果字符串里面有点字符,那么XAML解析器就会失败。我尝试了各种逃避,但没有任何帮助。
<datafilter:ItemPropertyDefinition Name="Players.Count"
PropertyType="{Binding Int32, ElementName=Types}"
DisplayName="Squad Size">
</datafilter:ItemPropertyDefinition>
无论我做什么,我都不能有一个包含点的字符串文字。 XAML解析器总是告诉:
“Players.Count”不是Name的有效值。
有什么想法吗?提前谢谢。
罗森
答案 0 :(得分:1)
这不是文字,而是Name属性。你不能拥有“。”在Name中,就像你不能用“。”命名变量一样。在代码中。
在您的示例中,访问DisplayName属性将写为:Players.Count.DisplayName,这是没有意义的。
您认为适当的命名约定是PlayerCount。
答案 1 :(得分:0)
我发现了发生了什么事。真是太棒了。只是命名的巧合。
ItemPropertyDefinition是我的OWN类。它是一个DependencyObject。它有一个名为Name的字符串DependencyProperty。它被称为Name,因为它拥有事物的名称。
也许“聪明”的XAML解析器不允许Name属性中的点完全忽略这是MY类的事实,这是我的属性。
我必须将其更改为名为PropertyName,否则我将弄乱DependencyObject.Name属性。
答案 2 :(得分:0)
XAML使用Name
和x:Name
属性对元素名称进行特殊处理。来自FrameworkElement.Name Property:
用于Name的字符串值具有一些限制,这是由XAML规范定义的基础x:Name指令强加的。最值得注意的是,名称必须以字母或下划线字符(_)开头,并且必须仅包含字母,数字或下划线。有关更多信息,请参阅WPF XAML Namescopes。
一般情况下,在定义Name
时应避免定义FrameworkElement
属性。