绑定到 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 代码来更好地处理转换器参数。例如,将参数设为可选,这样如果没有传入,就使用默认值,或类似的东西...
我想将我的元素高度绑定到另一个元素高度加上 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 代码来更好地处理转换器参数。例如,将参数设为可选,这样如果没有传入,就使用默认值,或类似的东西...