WPF使用IMultiValueConverter實現多路繫結
阿新 • • 發佈:2018-12-18
定義MultiValueConvertor類
class MultiValueConvertor : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { int i1 = ToInt(values[0]); int i2 = ToInt(values[1]); return (i1 + i2).ToString(); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } private int ToInt(object value) { if (value == DBNull.Value || value == null || string.IsNullOrEmpty(value.ToString())) { return int.MinValue; } try { return System.Convert.ToInt32(value); } catch { return int.MinValue; } }
可以發現與單路繫結的方法差不多,只不過傳進來的value是個陣列。
前臺繫結程式碼
<TextBlock x:Name="textBlock1" HorizontalAlignment="Left" Margin="335,141,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Height="43" Width="120"> <TextBlock.Text> <MultiBinding Converter="{StaticResource MultiValueConverter}"> <Binding ElementName="textBox2" Path="Text"></Binding> <Binding ElementName="textBox3" Path="Text"></Binding> </MultiBinding> </TextBlock.Text> </TextBlock>
把textblock的Text屬性繫結到兩個textbox的Text屬性上,當我們在兩個textbox內輸入整數時,會傳入轉化器進行計算,並且在textblock中顯示運算後的結果。
需要注意的是在這裡有一個順問題,我們時先繫結的textbox2,所以說在轉換器中values[0]是對應的他的值。