У меня есть абстрактный Usercontrol, который включает Shape и Textbox.Поэтому, если я создаю класс, который наследует мой Usercontrol, я могу сказать, что Shape является прямоугольником, а в текстовом поле я могу сказать, что он содержит текст типа «прямоугольник».Я дал каждой фигуре и текстовому полю Имя, но не могу достать их по имени.Поэтому мне нужно сделать те Public, которые, насколько я знаю, возможны только с x: Fieldmofifier, который я могу использовать только в редакторе XAML.Так есть ли способ сделать эти Shape & Textbox общедоступными?(Извините за мой плохой английский)
abstract public partial class Tool : UserControl
{
public Tool(int marginRight, Shape shape,string text, string name)
{
InitializeComponent();
this.DataContext += null;
grid.Margin = new Thickness(0, 0, 0, 0) { Right = marginRight };
Width = 60;
Height = 60;
shape.Stroke = Brushes.Black;
shape.StrokeThickness = 0.50;
shape.Fill = Brushes.White;
shape.VerticalAlignment = VerticalAlignment.Center;
shape.HorizontalAlignment = HorizontalAlignment.Center;
grid.Children.Add(shape);
shape.Name = "sp_shape";
TextBox textblock = new TextBox()
{
IsReadOnly = true,
Text = text,
FontSize = 10,
Margin = new Thickness(0),
Foreground = Brushes.Black,
TextWrapping = TextWrapping.Wrap,
TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.Center,
HorizontalAlignment = HorizontalAlignment.Center,
VerticalContentAlignment = VerticalAlignment.Center,
Background = Brushes.Transparent,
BorderThickness = new Thickness(0),
Name = "tb_shape",
IsEnabled = true,
};
grid.Children.Add(textblock);
...
public class CircleTool : Tool
{
public CircleTool() : base(0, new Ellipse()
{
Width = 35,
Height = 35,
}, "Kreis", "_circle")
{
//nothing / empty
}
...
Tool el = (Tool)element;
var b = el.grid. <-- i wanna talk to my childs here
Я могу говорить только с моей сеткой, потому что этосоздано в xaml в wpf.Поэтому я могу изменить FieldModifier на public, но не на мои Shapes & Textbox.
<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>