public object 来自 parent class 在 child class xaml 中为空

public object from parent class is null in child class xaml

考虑这个简单的 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>

它是 child 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>

现在让我们在某处使用 child:

CustomControls.MyUserControl2 control = new CustomControls.MyUserControl2();
MyGrid.Children.Add(control);
control.MyTextBox.Text = "Some text";//NullReferenceException here

并且我得到 NullReferenceException 这基本上告诉我 MyTextBox 是空的!这里有什么问题?

P.S.

  1. 我给了足够的时间来解决这个问题,我得出结论,当我从另一个视图派生一个 xaml 视图并尝试访问内部 public objects 时,就会出现这个问题。
  2. MyUserControl1.xamlMyUserControl2 都有它们的 code-behind .cs 文件,它们只调用 InitializeComponent(),没有别的.

通过咨询我的团队,简短的回答是不支持

看起来您想要使用 XAML 进行视觉继承,并在要使用的基础 XAML 文件中包含 UI。对于 XAML,这不像 Winforms 那样支持收件箱。以下是关于它的更多信息以及限制:UserControl inheritance #100

如果您在没有任何 XAML 的情况下创建用户控件完成代码,子类应该可以正常工作。