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
中绑定了一组依赖项属性我遇到的问题是每个属性都是“获取”并返回值,但它从不“设置”该值。我可以在转换器中使用依赖属性吗?或者我应该以不同的方式接近这个?提前谢谢!
答案 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