C#WPF如何更改代码中的x:FieldModifier?

C#WPF如何更改代码中的x:FieldModifier?,c#,wpf,C#,Wpf,我有一个抽象的用户控件,包括一个形状和一个文本框。因此,如果我创建一个继承到Usercontrol的类,我可以说该形状是一个矩形,在textbox中,我可以说它包含一个类似“矩形”的文本。我给每个形状和文本框起了一个名字,但我无法通过名字联系到它们。因此,我需要公开这些,据我所知,只有x:fieldmofinger才可能公开,我只能在XAML编辑器中使用它。那么,有没有办法让这些形状和文本框公开?(对不起,我的英语不好) Tool el=(工具)元素; var b=标高网格 不确定为什么要在

我有一个抽象的用户控件,包括一个形状和一个文本框。因此,如果我创建一个继承到Usercontrol的类,我可以说该形状是一个矩形,在textbox中,我可以说它包含一个类似“矩形”的文本。我给每个形状和文本框起了一个名字,但我无法通过名字联系到它们。因此,我需要公开这些,据我所知,只有x:fieldmofinger才可能公开,我只能在XAML编辑器中使用它。那么,有没有办法让这些形状和文本框公开?(对不起,我的英语不好)

Tool el=(工具)元素;

var b=标高网格 不确定为什么要在代码隐藏中创建它,但只需将文本框设置为工具类的公共成员,例如公共只读属性:

public partial abstract class Tool : UserControl
{
    public TextBox TextBox { get; }

    public Tool(...)
    {
        ...
        TextBox = new TextBox
        {
           ...
        };

        grid.Children.Add(TextBox);
    }
}
然后像这样访问它:

var tb = el.TextBox;

在代码隐藏中创建UI元素是一种糟糕的做法。您在这里所做的工作可以通过DataTemplates轻松完成。或使用自定义控件的控件模板。请阅读有关MS Docs的文章。嘿,非常感谢您的帮助!我也可以做我的形状!但你不应该。说真的,看看DataTemplates和ControlTemplates。嘿,克莱门斯,是的,thx我会看看ofc,也许会改变,因为用户控制的东西有时会让我发疯。
                    Tool el = (Tool)element;
                    var b = el.grid. <-- i wanna talk to my childs here
<UserControl x:Class="UML_Softwaremodellierung.Tool"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup- 
         compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:UML_Softwaremodellierung"
         mc:Ignorable="d" 
         d:DesignHeight="60" d:DesignWidth="60"
         AllowDrop="true"
         >
<Grid x:Name="grid" x:FieldModifier="public"/>
</UserControl> 
public partial abstract class Tool : UserControl
{
    public TextBox TextBox { get; }

    public Tool(...)
    {
        ...
        TextBox = new TextBox
        {
           ...
        };

        grid.Children.Add(TextBox);
    }
}
var tb = el.TextBox;