У меня есть окно с простым элементом кадра (назовем его «myFrame»). Внутри Window.Loaded я анализирую строковую переменную (загруженную из внешнего источника) с помощью XamlReader.Parse (string), и в результате получается объект Page (локальная переменная называется «myPage»). Я устанавливаю myFrame.Content = myPage.
Внутри страницы есть ярлык, например:
<label Name="DataBindingTestLabel" Content="{Binding Path=TestLabel, TargetNullValue='Null value'}" />
Я пытаюсь предоставить анонимный тип (для простого тестирования) как текстовый фрейм фрейма, например:
this.ContentFrame.DataContext = new { TestLabel = "Hello, world." };
Я проверил, что свойство DataContext имеет значение после того, как оно установлено, и сохраняет это значение до тех пор, пока я могу пошагово выполнить окно, но значение теряется некоторое время до того, как окно отображается, и значение возврата, "Null значение, "отображается.
После включения трассировки привязки данных в окне вывода в Visual Studio отображается:
Сведения о System.Windows.Data: 41: Ошибка пути BindingExpression: свойство 'TestLabel' не найдено для 'объекта', поскольку элемент данных имеет значение null. Это может произойти, потому что поставщик данных еще не произвел никаких данных. BindingExpression: Path = TestLabel; DataItem = NULL; целевым элементом является 'Label' (Name = 'DataBindingTestLabel'); Целевым свойством является «Содержимое» (тип «Объект»)
Любое понимание того, что я делаю неправильно, очень ценится.