依赖属性:获取但不是设置

时间:2011-05-17 13:17:22

标签: wpf dependency-properties

public static readonly DependencyProperty SingleGridLengthProperty = DependencyProperty.Register("SingleGridLength", typeof(double), typeof(MapConverter));

public class MapConverter : DependencyObject, INotifyPropertyChanged, IMultiValueConverter
{
    public double SingleGridLength
    {
        get { return (double)GetValue(MapConverter.SingleGridLengthProperty); }
        set 
        {
            SetValue(MapConverter.SingleGridLengthProperty, value);
            OnNotifyPropertyChanged("SingleGridLength");
        }
    }

<local:MapConverter x:Key="MapConverter"
SingleGridLength="{Binding SingleGridLength, RelativeSource={RelativeSource Self}}" />

我有一个转换器,在.xaml

中绑定了一组依赖项属性

我遇到的问题是每个属性都是“获取”并返回值,但它从不“设置”该值。我可以在转换器中使用依赖属性吗?或者我应该以不同的方式接近这个?提前谢谢!

3 个答案:

答案 0 :(得分:2)

首先,您的绑定无效。您将SingleGridLength属性绑定到自身。您需要将其绑定到另一个属性/对象。

其次,不应在SingleGridLength属性的setter中引发OnNotifyPropertyChanged。您只需要为常规CLR属性执行此操作。依赖属性具有Binding挂钩的内置更改通知系统。

答案 1 :(得分:1)

查看您可以在PropertyChangedCallback构造函数中指定的PropertyMetadata委托。当依赖项属性的属性值发生更改时,将调用回调,并且可以将处理代码放在此回调方法中。

答案 2 :(得分:0)

我建议使用基于IValueConverter的转换器? 然后转换器应该只进行从输入到输出格式的计算。转换器返回的值

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)

将由您绑定的属性使用。

请参阅:http://msdn.microsoft.com/de-de/library/system.windows.data.ivalueconverter.aspx