2010-09-03 75 views
0

也許這是明顯的,但這是我的。我需要在XAML中編寫一個字符串。沒關係,但是如果字符串中包含點字符,則XAML解析器將失敗。我嘗試了各種逃避,但沒有任何幫助。如何在XAML(Silverlight 4)中輸入包含點字符的字符串文字?

  <datafilter:ItemPropertyDefinition Name="Players.Count" 
               PropertyType="{Binding Int32, ElementName=Types}" 
               DisplayName="Squad Size"> 
      </datafilter:ItemPropertyDefinition> 

不管我做什麼,我都不能有一個包含點的字符串文字。 XAML解析器始終會告知:

「Players.Count」對於Name而言不是有效值。

任何想法?提前致謝。

Rossen

回答

1

它不是文字,它是Name屬性。你不能擁有「。」在Name中,就像你不能用「。」命名變量一樣。在代碼中。

在您的示例中,訪問DisplayName屬性將寫爲:Players.Count.DisplayName,這是沒有意義的。

您的情況下,適當的命名約定,我認爲是PlayerCount。

+0

這是不正確的。該名稱的類型爲String。如果我在代碼隱藏方面寫這個,可以做到,一切都很好。只有XAML失敗。 – 2010-09-03 13:53:55

+0

我可以這樣寫在C#中: itemPropertyDefinition.Name =「Player.Count」; 爲什麼不在XAML中? – 2010-09-03 13:54:37

+0

DisplayName與名稱有什麼關係?只要忽略其他兩個屬性。只考慮NAME財產。它是STRING類型,我想分配一個包含點字符的STRING。你不關心我會用它做什麼 - 我只是想分配它。你知道我爲什麼可以嗎? – 2010-09-03 13:56:16

0

我發現了這是怎麼回事。這太神奇了。只是命名的一個不好的巧合。

ItemPropertyDefinition是我的OWN類。它是一個DependencyObject。它有一個名爲Name的字符串DependencyProperty。它被稱爲Name,因爲它擁有事物的名稱。

也許「聰明的」XAML解析器不允許在Name屬性中完全忽略這個事實,即這是MY類,這是MY屬性。

我必須改變這個被稱爲PropertyName,否則我搞砸了DependencyObject.Name屬性。

0

XAML對使用Namex:Name屬性的元素名稱給予特殊處理。從FrameworkElement.Name Property

用於Name的字符串值具有一些限制,如由XAML規範定義的基礎x:Name指令強加的。最值得注意的是,名稱必須以字母或下劃線字符(_)開頭,並且只能包含字母,數字或下劃線。有關更多信息,請參閱WPF XAML Namescopes。

一般來說,在定義FrameworkElement時應避免定義Name屬性。

+0

ItemPropertyDefinition是一個DependencyObject。它不是一個FrameworkElement。 – 2010-09-03 14:26:24

相關問題