Очистка свойства зависимости

#c# #wpf #dependency-properties

#c# #wpf #зависимость-свойства

Вопрос:

У меня возникли некоторые проблемы с обновлением свойства зависимости из стандартного свойства.

Если я присвою свойству значение null или обновлю его новыми данными, у меня создалось впечатление, что это приведет к сбросу свойства зависимости. Однако это выглядит так, будто он просто накладывает новые данные сверху.

Вот пара свойств / зависимостей, которые я использую:

Свойства зависимости

 public static readonly DependencyProperty DataTableChartProperty = DependencyProperty.Register
    ("DataTableChart", typeof(DataTable), typeof(MainWindowViewModel));

public static readonly DependencyProperty ContentElementProperty = DependencyProperty.Register
    ("ContentElement", typeof(FrameworkElement), typeof(MainWindowViewModel));
  

Стандартные свойства

 public DataTable DataTableChart
{
    get { return (DataTable)this.GetValue(DataTableChartProperty); }
    set { this.SetValue(DataTableChartProperty, value); }

public FrameworkElement ContentElement
{
    get { return (FrameworkElement)this.GetValue(ContentElementProperty); }
    set { this.SetValue(ContentElementProperty, value); }
}
  

Я был бы очень признателен за любые предложения. Заранее спасибо!

Вот как я его сейчас настраиваю … для тестирования…

 void _bw_DoWork(object sender, DoWorkEventArgs e)
    {
        var loadLog = new LoadLog();
        e.Result = loadLog.LoadCaseLogs(SelectedFiles);
    }

    void _bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        DataTableChart = null;
        ContentElement = null;
        ContentElement = blah;
        DataTableResult = e.Result as DataTable;
        DataTableChart = caseData.LoadUserData(DataTableResult);

        LoadingScreen = false;
    }

public ChartControl blah = new ChartControl();
  

Комментарии:

1. Что вы подразумеваете под тем, что это выглядит так, будто просто накладывает новые данные сверху ? Пожалуйста, покажите нам, как вы настраиваете свойство, поскольку это не имеет особого смысла. Вызов DataTableChart = null должен быть всем, что вам нужно.

2. Я попытался просто установить для него значение null, у меня не получилось

Ответ №1:

Свойства зависимости очищаются с помощью ClearValue метода, установка его на null — это просто установка его на null , что не одно и то же.

Комментарии:

1. итак, я бы сделал что-то вроде, бла.clearvalue(DataTableChart)?

2. @rreeves: Да, за исключением того, что вы передаете поле свойства, которое является DataTableChartProperty .