绑定到两个属性

时间:2013-02-22 01:03:30

标签: .net wpf binding

我有一个有趣的场景 - 我有一个滑块,需要在更改值时立即更新控件。一切都很好,很容易。

但我还是喜欢做一些额外的工作,但只是在延迟之后。绑定上的.NET 4.5延迟属性是完美的,但现在滑块值需要有两个绑定...一个有延迟,一个没有。

类似于以下内容:

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

我知道这不存在,但它会很高兴。但有没有办法使用4.5的新延迟道具?

1 个答案:

答案 0 :(得分: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 };
    }
}