2011-02-18 83 views
0

全部,Silverlight綁定問題

我第一次嘗試使用Silverlight,我有一個關於綁定的問題。我有一個綁定到自定義數據對象的表單。對此,我有兩個箱子標記爲:

駕駛Experiece [Textbox]年[Textbox]個月。

我需要將它綁定到DrivingExperienceMonths的一個整數屬性。舉例來說,如果DrivingExperienceMonths等於29,我會在年份文本框中看到2,在月份文本框中看到5。

我當然可以爲文本框中的文本更改事件添加一個偵聽器並以這種方式處理它,但表單上的其他所有內容都使用了TwoWay綁定,並且我希望這可以。

由於提前

回答

2

你可以通過實施IMultiValueConverter爲此在WPF,但不幸的是,這不是在Silverlight的支持。

最好的選擇是讓你的ViewModel處理這個問題。它可以創建一個「Months」和「Years」屬性,並自動同步到您的DrivingExperienceMonths值。

如果您只想使用OneWay綁定(僅用於顯示),則可以使用兩個IValueConverter。對於TwoWay數據綁定,它將不得不在代碼中處理。

+0

一個側面說明,像devexpress一些第三方工具支持多重綁定。此處還有一個博客,您可以下載允許您進行多重綁定的擴展程序http://www.scottlogic.co.uk/blog/colin/2010/05/silverlight-multibinding-solution-for-silverlight-4/。 – 2011-02-18 06:16:44

0

我想創建一個值轉換器(從的IValueConverter派生類),其將整數轉換到完整的字符串。然後您將在綁定中設置ValueConverter的一個實例。

+0

這隻適用於單向綁定,因爲有兩個不同的值。這是不可能做到這一點ConvertBack ... – 2011-02-18 00:44:17

0

你或許可以創建一個value converter從該屬性(通過ConverterParameter指定)提取相應的信息

編輯:正如我剛纔注意到(和科普塞在他的回答說明),這是行不通了如果你需要雙向綁定。更好地做轉換在兩個單獨的屬性...

事情是這樣的:

public int DrivingExperienceMonths { get; set; } 

public int ExpMonths 
{ 
    get { return DrivingExperienceMonths % 12; } 
    set { DrivingExperienceMonths = (ExpYears * 12) + value; } 
} 

public int ExpYears 
{ 
    get { return DrivingExperienceMonths/12; } 
    set { DrivingExperienceMonths = (value * 12) + ExpMonths; } 
}