При задании значения в своём свойстве в xaml оно всегда null в конструкторе контрола

215
26 мая 2018, 03:00

Добавляю своё свойство в контрол, чтобы его можно было задавать через xaml

public class CheckBoxDataGridControl : DisabledRowsDataGrid
{
    public string ActionCheckBoxColumnFieldName
    {
        get
        {
            return (string)GetValue(ActionCheckBoxColumnFieldNameProperty);
        }
        set
        {
            SetValue(ActionCheckBoxColumnFieldNameProperty, value);
        }
    }

    public static readonly DependencyProperty ActionCheckBoxColumnFieldNameProperty;
    static CheckBoxDataGridControl()
    {
        ActionCheckBoxColumnFieldNameProperty = DependencyProperty.Register("ActionCheckBoxColumnFieldName", typeof(string), typeof(CheckBoxDataGridControl));
    }
    public CheckBoxDataGridControl()
    {
        ...
        if (string.IsNullOrWhiteSpace(ActionCheckBoxColumnFieldName))
            ActionCheckBoxColumnFieldName = "IsAction";
        ...
    }

В конструкторе свойство всегда null. Как что-то передать из xaml разметки в конструктор контрола?

Answer 1

В конструктор — никак. XAML умеет строить объекты только с конструктором по умолчанию, а установка свойств происходит уже после конструирования объекта. Ну и не забывайте, что установка значений Dependency Property происходит напрямую (минуя обычное свойство, которое имеется здесь только для удобства использования в коде), поэтому для реакции на изменение свойства зависимости воспользуйтесь перегрузкой DependencyProperty.Register принимающей PropertyMetadata и конструктором PropertyMetadata, принимающим PropertyChangedCallback, в котором уже и выполните необходимые действия.

READ ALSO
Возможно ли вызывать функцию из C# в JS

Возможно ли вызывать функцию из C# в JS

Возможно ли зарегистрировать функцию в C#, и передать её в ChromiumДопустим, есть функция на C# , которая будет выглядеть так:

237
WPF ComboBox + MVVM, запрос при выборе элемента

WPF ComboBox + MVVM, запрос при выборе элемента

В процессе работы над проектом возникла необходимость сделать ComboBox при выборе элемента которого выдавался бы запрос, Вроде - "А Вы уверены?",...

214
Элементы формы в dll

Элементы формы в dll

Как использовать элементы формы в методах библиотеки и подключить SystemWindows

198