2013-02-15 61 views
0

我正在寫一個Windows 8應用程序(爲我自己),爲一些自動生成的路徑生成g代碼。在生成g代碼時,我想使用可以在應用程序中自行編寫和編輯的文本模板。我認爲遵循{binding path}記法是一個好主意,所以我的模板可能看起來像我可以使用現有的地鐵類創建一個可連接的字符串沒有連接到一個可見的UI控件

「{binding Gcode.LinearMove} {binding Axis.X} {binding CurrentPoint.X} .... 「在數據綁定後給予 」G1 X 90 ...「。

所有對象Gcode,Axis,CurrentPoint可以被定義爲代碼生成器的DataContext的一部分。

我目前使用使用StringBuilder構建的簡單字符串並傳遞給ListView進行顯示並使用格式來替換值,但是當然這凍結了我在代碼中使用的屬性並且是限制性的。我玩過使用正則表達式替換的特定模板名稱,但再次將替換值凍結在代碼中。

我認爲使用可編輯模板可以讓我有更大的自由來動態選擇在運行時使用哪些屬性。

所以我的問題, 這是可能做到使用現有的地鐵類和.NET的數據綁定實現,或者我必須從頭開始?請記住綁定將在不可見和非UI控件上進行。我認爲對於數千行gcode的列表使用Textblocks在資源方面將是一件愚蠢的事情,並且我還在某處讀到應用程序中無法使用多重綁定的情況。

艾倫

回答

0

是的,你可以使用的TextBlock或RichTextBlock和個人奔跑綁定到要顯示的屬性。當後面的代碼改變時(只要它正確地實現INotifyPropertyChange),那麼屏幕上的文本應該按預期更新。

這裏有約束力的運行良好的小文章:

http://tozon.info/blog/post/2012/10/16/Windows-Store-apps-the-case-of-missing-StringFormat-or-Binding-on-the-Run.aspx

開發支持,設計支持和更多的真棒善良的人:http://bit.ly/winappsupport

+0

謝謝,我使用遊試着如你所說只有我不知道如何綁定到c#中的運行文本屬性。我將文本直接設置爲像{binding mypath}那樣的似乎沒有執行的內容。當我查看textBlocks文本屬性時,它只是響應綁定文本。運行似乎沒有可訪問的SetBinding調用,並且運行沒有公共TextProperty屬性。那麼有關如何進行的任何提示? – 2013-02-19 22:25:20

相關問題