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