感谢 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 绑定到另一个属性,不确定为什么存在这种限制。