Вы можете попытаться использовать метод извлечения, чтобы избежать дублирования кода.
Если вы используете children
, это может быть UIElementCollection , который add
метод должен передать System.Windows.UIElement
класс.
Control _textbox = GetTextBox();
_textbox.Tag = "custom tag name";
grid.Children.Add(_textbox);
Grid.SetRow(_textbox, row);
public Control GetControl(){
Control _textbox;
if (condition1) {
_textbox = GetTextBox();
}
else if (condition2) {
_textbox = new AutoSuggestBox();
}
return _textbox;
}
public TextBox GetTextBox(){
TextBox _textbox = new TextBox();
_textbox.Text = "text";
return _textbox;
}
Или вы можете попробовать использовать. Я видел, как вы редактировали свой вопрос, вы можете попробовать использовать Dictionary
в качестве таблицы сопоставления, а затем использовать TryGetValue
, чтобы сделать это.
Dictionary<string, Control> dict = new Dictionary<string, Control>();
dict.Add("STRING", new TextBox() { Text = "text" });
dict.Add("ACTOR", new AutoSuggestBox());
Control _textbox;
if (dict.TryGetValue(datatype, out _textbox))
{
_textbox.Tag = "custom tag name";
grid.Children.Add(_textbox);
Grid.SetRow(_textbox, row);
}