Свойство зависимости: получение, но не настройка - PullRequest
2 голосов
/ 17 мая 2011
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 ]

2 голосов
/ 17 мая 2011

Во-первых, ваша привязка недействительна. Вы привязываете свойство SingleGridLength к себе. Вам необходимо привязать его к другому свойству / объекту.

Во-вторых, вы не должны вызывать OnNotifyPropertyChanged в установщике для свойства SingleGridLength. Вам нужно сделать это только для обычных свойств CLR. Свойства зависимостей имеют встроенную систему уведомлений об изменениях, в которую перехватывается Binding.

1 голос
/ 17 мая 2011

Посмотрите на делегат PropertyChangedCallback , который можно указать в конструкторе PropertyMetadata .Обратный вызов будет вызываться при изменении значения свойства вашего свойства зависимости, и вы можете поместить свой код обработки в этот метод обратного вызова.

0 голосов
/ 19 марта 2012

Я предлагаю использовать конвертер на основе 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...