2009-12-23 60 views
0

我是WPF的新手,我試圖創建一個WPF控件,以特定的方式顯示一個字符串(它總是一個數字)。控件上會有三個不同的文本字段,並且字符串需要按照以下規則分成三個不同的組件:WPF控件和解析/綁定到給定的字符串

假設您有字符串「1.5678」。控制需要顯示該字符串如下,在三個文本字段:
textField1的=「1.5」
文本字段2 =「67」
文本字段3 =「8」

規則是文本字段3將總是包含最後一個字符,textField2將包含最後一個字符之前的兩個字符,而textField1將包含其餘字符。這裏有一些例子:

「145.670」
textField1 =「145.」
文本字段2 = 「67」
文本字段3 = 「0」

「15.839」
textField1的= 「15」
文本字段2 = 「83」
文本字段3 = 「9」

假定字符串將總是包含至少4個字符。

現在,有沒有一種方法可以使用新的WPF綁定功能爲我自動執行此操作?我可以將WPF控件綁定到包含字符串的某個屬性,並讓文本框按照我所描述的那樣顯示它?

感謝

回答

0

你可以通過綁定(到一個單一的財產),通過使用IValueConverter爲您結合做到這一點。 IValueConverter的文檔給出了一個示例實現。

每個控件都可以有一個轉換器,用於指定要顯示的部分,然後您的文本框綁定就會爲您執行轉換。

請注意,您可以通過使用三個獨立的轉換器類或具有指定要顯示哪個部分的枚舉的一個類(仍然需要三個唯一實例)來完成此操作。

+0

使用值轉換器不會允許您使用雙向綁定,因爲無法僅基於已更改的部分來確定整個值。 – 2009-12-24 11:44:48

+0

不,但他特別只提到了字符串的DISPLAY - 他沒有指定他需要編輯字符串。 – 2009-12-24 16:52:32

0

是的,那應該是可以的。

  1. 創建一個用戶控件。

  2. 建立在你的控制依賴屬性(Text/TextProperty),將包含字符串(以後可以進行數據綁定到這個屬性時使用你的控制)。

  3. 創建一個converter,將完整的字符串轉換爲必需的部分(基於轉換器的某些屬性,例如PartNumber)。

  4. 在您的控件的XAML中,使用不同的零件編號創建您的轉換器的三個實例作爲靜態資源。

  5. 然後使用綁定({Binding ElementName=myControl, Path=Text, Converter={StaticResource FirstPartConverter}}),它使用正確的轉換器將控件中的文本字段綁定到依賴項屬性。

如果任何步驟不清楚,請隨時在評論中提問。