我想将元素高度绑定到另一个元素高度再加上20像素......
有可能做这样的事吗?
<ScrollViewer Height="{Binding Height, ElementName=AnotherElement}">
答案 0 :(得分:1)
是的,使用值转换器
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代码来更好地处理转换器参数。例如,将参数设为可选参数,因此如果未传入参数,请使用默认值,或类似的...