Пользовательский элемент управления WPF DataContext является Пустым

Существует проблема метода. Список с двойной цепью должен иметь первый и последний элементный указатель в структуре.

struct T_Element
{
   previous *T_Element = nullptr;
   next *T_Element     = nullptr;
};

class T_List
{
public:
/*add and delete functions*/
   void print()
   {
       for(T_Element *element = first; element != nullptr ; element = element->next)
       {
          print(element); /*to define*/
       }
   }
   void reversePrint()
   {
      for(T_Element *element = last; element != nullptr ; element = element->previous)
     {
        print(element); /*to define*/
     }
  }
private:
   first *T_Element = nullptr;
   last *T_Element  = nullptr;
};
18
задан Justin Bozonier 17 November 2008 в 19:01
поделиться

3 ответа

сбой, что, если необходимо проверить, устанавливается ли DataContext, можно использовать Примечание DataContextChanged

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();

        DataContextChanged += new DependencyPropertyChangedEventHandler(UserControl1_DataContextChanged);
    }

    void UserControl1_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
    {
        // You can also validate the data going into the DataContext using the event args
    }
}

он, привычка вводит UserControl1_DataContextChanged, пока DataContext не изменяется от пустого указателя до другого значения.

Не уверенный, если это отвечает на Ваш вопрос, но может быть довольно удобно для использования в отладке проблем.

23
ответ дан 30 November 2019 в 06:46
поделиться

Я думаю, что Вы проверяете 'DataContext' в конструктора UserControl. Это будет пустым в Конструкторе, так как пользовательский элемент управления еще не создал, в то время как выполнение находится в коде конструктора. Но проверьте свойство в событии Loaded, Вы будете видеть объект правильно.

public partial class UserControl1
{
    public UserControl1()
    {
        this.InitializeComponent();

        //DataContext will be null here 
        this.Loaded += new RoutedEventHandler(UserControl1_Loaded);
    }

    void UserControl1_Loaded(object sender, RoutedEventArgs e)
    {
        //Check DataContext Property here - Value is not null
    }
}
12
ответ дан 30 November 2019 в 06:46
поделиться

Я проверил бы, чтобы видеть, есть ли у Вас ошибка привязки во времени выполнения. Добавьте это пространство имен к своему XAML:

xmlns:debug="clr-namespace:System.Diagnostics;assembly=System"

и проверка Окно вывода отладчика для соответствующих сообщений об ошибках.

, С другой стороны, можно ли показать нам больше кода?

10
ответ дан 30 November 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: