绑定到 Element 高度加上一个值

Binding to Element height Plus a value

我想将我的元素高度绑定到另一个元素高度加上 20 像素...

这样的事情可以做吗?

<ScrollViewer Height="{Binding Height, ElementName=AnotherElement}">

是的,通过使用值转换器

public class IncreaseByValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        var passedInValue = System.Convert.ToDouble(value);
        var increaseByValue = System.Convert.ToDouble(parameter);

        return passedInValue + increaseByValue;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

在您的资源中某处定义为静态资源:

<local:IncreaseByValueConverter x:Key="IncreaseByValueConverter" />

这样使用:

<ScrollViewer Height="{Binding Height, ElementName=AnotherElement, Converter={StaticResource IncreaseByValueConverter}", ConverterParameter="20">

您可能希望通过在 IncreaseByValueConverter.Convert 方法中使用一些 try/catch 代码来更好地处理转换器参数。例如,将参数设为可选,这样如果没有传入,就使用默认值,或类似的东西...