2013-02-22 110 views
1

我有一個有趣的場景 - 我有一個滑塊,需要立即更新控件,因爲它的值已更改。一切都很好,很容易。綁定到兩個屬性

但我也喜歡它做一些額外的工作,但只有延遲後。綁定的.NET 4.5延遲屬性將是完美的,但現在滑塊值需要有兩個綁定......一個有延遲,一個沒有。

事情是這樣的等價物:

<Slider value={Binding Path=Property1, Delay=500; Binding Path=Property2} /> 

我知道這並不存在,但它會是不錯的。但是有沒有一種方法可以使用4.5版本中的新的Delay prop?

回答

1

不知道這是否會起作用,但可以使用虛擬轉換器使用MultiBinding作弊。

喜歡的東西:

XAML:

<Window.Resources> 
     <local:DummyConverter x:Key="Dummyconverter" /> 
    </Window.Resources> 
    <Grid> 
     <Slider > 
      <Slider.Value> 
       <MultiBinding Converter="{StaticResource Dummyconverter}" > 
        <Binding Path="Value1" /> 
        <Binding Path="Value2" Delay="500" /> 
       </MultiBinding> 
      </Slider.Value> 
     </Slider> 
    </Grid> 

虛擬轉換

public class DummyConverter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return values == null ? null : values[0]; 
    } 

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return new object[] { value, value }; 
    } 
} 
+0

我不介意欺騙了一下這個... :)虐待嘗試了這一點,謝謝! – Nicros 2013-02-22 04:50:06