2013-03-22 68 views
0

在TFS DefaultTemplate.11.1.xaml建立流程模板,也有很多的屬性,其整個值由方包圍牙套[],所以標籤的形式圍繞屬性值的方括號是什麼?

<tagName attributeName="[attributeValue]">

其中tagNameattributeNameattributeValue是文本字符串。

我找不到這個值語法的任何文檔。從模板看,它似乎會導致XAML處理器將文本評估爲表達式。這是解釋的地方?

回答

1

我相信XAML中的方括號確實表示值表達式。我仍然不確定這種外延是如何被支持或執行的。可能性包括:

-XAML語法;我認爲這是最可能的答案。

-A Converter執行某處在解析過程中檢測到值開始並以方括號結束時,並在處理期間評估內容;我認爲這是第二個可能的答案。

- 方括號實際上可能不是特殊字符,並且作爲標識符的一部分有效,該值的評估是通過其他尚未知的機制執行的,並且方括號僅出現在約定中,也許是爲了表明價值不是文字,而是要評估的表達。我認爲這是不太可能的答案。

支持研究:

"Expressions created in the WF designer are serialized using square brackets, which is shorthand for VisualBasicValue or VisualBasicReference"

"Hand edit the workflow XAML file to change value of the Number property to [1+2] (the square brackets denote an expression)"

"Expressions are literal values or Visual Basic code bound to arguments or properties. They contain value elements (e.g. variables, constants, literals, properties) that are combined with operations to yield a new value. Expressions are written using VB.NET syntax even if the application is in a program using C#."

"Workflows produced by designer are saved in XAML, where expressions appear enclosed in square brackets."

最後一個以上報價是我發現的唯一官方文檔,以任何方式提到圍繞XAML屬性值的方括號表達式,並且這還沒有闡明設計者是否僅僅是這樣隨意地執行這個操作,而沒有調用任何特殊的語法,或者表達式必須出現在根據官方XAML規範的方括號,因此設計者必須這樣做。

0

這是一個以前在您的XAML中設置的屬性,例如:<x:Property Name="BuildNumberFormat" Type="InArgument(x:String)" />如果您在VS 2012中打開構建過程模板,則可以使用Workflow更改/定製它們。

+0

我認爲這是不正確的,除非你可以提供文件的鏈接。 [本頁](http://blogs.msdn.com/b/cathyk/archive/2010/01/26/expression-serialization-and-literal-support.aspx)說:「在WF設計器中創建的表達式使用序列化方括號,這是VisualBasicValue的簡寫或VisualBasicReference 「和[本文](http://blogs.msdn.com/b/cathyk/archive/2009/12/15/expressiontextbox-for-arguments-only.aspx )表示「手編輯工作流XAML文件以將Number屬性的值更改爲[1 + 2](方括號表示表達式)」。 – taz 2013-03-22 14:51:53

+0

其他猜測:方括號表達式是對「鍵」或「索引」的「直接引用」。另外:「少量XAML元素可以直接處理文本作爲其內容。」[^](http://msdn.microsoft.com/zh-cn/library/ms752059.aspx)。另外:「BAML表單是WPF XAML實現所使用的XAML的優化形式,它被優化,因爲它使用常用類型或成員的內部查找和令牌。」[^](http://msdn.microsoft.com/zh-cn/ .com/en-us/library/system.windows.baml2006.baml2006reader.aspx)方括號這樣的「內部令牌」? – taz 2013-03-22 14:58:25

+0

要完成我上面顯示的屬性是流程模板中的參數。所以當你打開BP模板時,你會在底部看到一個標籤'Arguments',你會發現在XAML文件中進一步使用的所有屬性。 – TimVK 2013-03-22 14:59:09