Рассмотрим это просто UserControl
MyUserControl1 .xaml:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Test.CustomControls.MyUserControl1"
x:Name="control" Width="250" Height="100">
<Grid x:Name="MyGrid" x:FieldModifier="public">
<TextBlock x:Name="MyTextBox" x:FieldModifier="public" Text="Hello from the other side !!" FontWeight="Light" Foreground="red"/>
</Grid>
</UserControl>
и это дочерний элемент MyUserControl2.xaml , который в основном просто получен из него, ничего нового:
<local:MyUserControl1
x:Class="Test.CustomControls.MyUserControl2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Test.CustomControls">
</local:MyUserControl1>
Теперь давайте где-нибудь использовать ребенка:
CustomControls.MyUserControl2 control = new CustomControls.MyUserControl2();
MyGrid.Children.Add(control);
control.MyTextBox.Text = "Some text";//NullReferenceException here
и я получаю NullReferenceException
, что в основном сообщает мне, что MyTextBox
равно нулю !! Что здесь не так?
P.S.
- Я уделил достаточно времени этой проблеме и пришел к выводу, что эта проблема возникает, когда я получаю представление xaml из другого представления и пытаюсь получить доступ к внутренним публичным объектам.
- И у
MyUserControl1.xaml
, и у MyUserControl2
есть свой код .cs , и они просто вызывают InitializeComponent()
, больше ничего.