如何在数据绑定中从转换器获取依赖属性

时间:2012-11-27 18:22:33

标签: c# wpf xaml

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的原始高度。

2 个答案:

答案 0 :(得分:1)

这似乎是首选解决方案,所以我将评论作为答案发布。

您可以使用多重绑定和IMultiValueConverter来实现此目的。然后,您可以绑定自动调整大小和原始高度值,并在转换器中处理它。

有关多重绑定的更多信息,请查看此链接:http://blog.csainty.com/2009/12/wpf-multibinding-and.html

答案 1 :(得分:0)

你应该考虑使用IMultiValueConverter而不是IValueConverter