1

我有一个有趣的场景——我有一个滑块需要在控件的值发生更改时立即更新它。那里都很好,很容易。

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

类似这样的东西:

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

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

4

1 回答 1

1

不确定这是否可行,但您可以使用MultiBinding虚拟转换器作弊。

就像是:

xml:

   <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 };
    }
}
于 2013-02-22T02:58:29.143 回答