Rectangle rectangle = new Rectangle();
rectangle.StrokeThickness = 10;
rectangle.Height = 200;
rectangle.Width = 100;
//Self defined propety
Boolean AutoSize = false;
rectangle.DataContext = AutoSize;
//Add binding
Binding bind = new Binding(rectangle.DataContext);
bind.Mode = BindingMode.OneWay;
bind.Converter = ConvertAutoSize2Height;
bindingList.Add(bind);
canvas.Children.Insert(0, rectangle);
//Value converter
[ValueConversion(typeof(Boolean), typeof(Double))]
public class ConvertAutoSize2Height : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Boolean autoSize = (Boolean)value;
if (autoSize)
return Double.NaN;
else
return **<<<I wanna return original height if autosize is false>>>**;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
请检查转换器,如果自动调整大小为假,我想返回rect的原始高度。
答案 0 :(得分:1)
这似乎是首选解决方案,所以我将评论作为答案发布。
您可以使用多重绑定和IMultiValueConverter
来实现此目的。然后,您可以绑定自动调整大小和原始高度值,并在转换器中处理它。
有关多重绑定的更多信息,请查看此链接:http://blog.csainty.com/2009/12/wpf-multibinding-and.html。
答案 1 :(得分:0)
你应该考虑使用IMultiValueConverter而不是IValueConverter