作为一个例子,如果我有一个元素,其大小我希望是另一个元素的两倍大小,我将如何实现这一目标?
以下是一个例子,mirroredObject
是我想要使用它的一半宽度作为Border
对象宽度的对象。
<Border Width="{Binding ActualWidth, ElementName=mirroredObject, Mode=Default}" />
我还有其他情况,我可能想要绑定的属性可能是其他元素宽度的总和,我怎么能实现这个呢?
解
请参阅我的答案,以获得lenanovd的回答所帮助的解决方案。
答案 0 :(得分:6)
您可以使用使用公式将int转换为另一个int的绑定转换器。例如,绑定转换器请阅读this文章。
希望它有所帮助。
答案 1 :(得分:2)
感谢levanovd提供了如何解决此问题的提示。以下是我解决这个问题的方法,再次感谢levanovd。
创建转换器
[ValueConversion(typeof(double), typeof(double))]
public class MultiplierConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
if (targetType != typeof(Double))
throw new Exception("Conversion not allowed.");
double f, m = (double)value;
string par = parameter as string;
if (par == null || !Double.TryParse(par, out f)) f = 1;
return m * f;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
if (targetType != typeof(Double))
throw new Exception("Conversion not allowed.");
double f, m = (double)value;
string par = parameter as string;
if (par == null || !Double.TryParse(par, out f)) f = 1;
return f == 0 ? float.NaN : m / f;
}
}
将转换器添加到您的XAML
<Window.Resources>
<n:MultiplierConverter x:Key="MultiplierConverter"/>
</Window.Resources>
在指定乘数参数的对象之间添加绑定。
<StackPanel>
<Rectangle x:Name="source" Width="100" Height="100" Stroke="Black"/>
<Rectangle Width="100" Stroke="Black"
Height="{Binding ActualWidth, ElementName=source, Mode=Default,
Converter={StaticResource MultiplierConverter},
ConverterParameter=2}"/>
</StackPanel>
现在第二个矩形将是第一个矩形的两倍,可以使用ConverterParameter
进行调整。遗憾的是,您无法将ConverterParameter
绑定到另一个属性,因此不确定存在该限制的原因。