Ich versuche, eine Möglichkeit zum Festlegen von Standardwert für meine Eigenschaften in C# zu definieren.Legen Sie den Standardwert für Eigenschaften fest, wenn Null
Ich habe viele Elemente TextBox und eine Schaltfläche, um den Standardwert wiederherzustellen. Ich möchte, dass, wenn Benutzer auf die Schaltfläche klicken, der Inhalt für TextBox auf Standard festgelegt ist.
Meine Idee ist es, den Wert auf Null und in Setter, überprüfen Sie Wert und wenn Wert ist Null, setzen Sie den Standardwert.
Es ist mein Code:
private void SetDefault()
{
Grid actualItem = tabControl.SelectedContent as Grid;
if (actualItem != null)
{
foreach (object elt in actualItem.Children)
{
if (elt.GetType() == typeof(TextBox))
{
TextBox box = elt as TextBox;
box.Text = null;
}
}
}
}
Beispiel TextBox:
<TextBox Grid.Row="1" Grid.Column="1"
Style="{StaticResource TextBoxStyle}"
Text="{Binding ExamplePropertie,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
Für jedes binded Element, das ich so etwas wie dies tun wollte:
[DefaultValue("default")]
public String ExamplePropertie
{
get
{
return _myProp;
}
set
{
if (value == null)
default(ExamplePropertie); // Not working
else
_myProp = value;
OnPropertyChanged(nameof(ExamplePropertie));
}
}
Aber default(ExamplePropertie)
nicht ist der gute Weg, das zu tun. Wie kann ich den mit [DefaultValue(value)]
definierten Wert einstellen?
Sie sollten einen "const" -Wert neben Ihrer Eigenschaft einfügen und sowohl im Attribut als auch im Code des Setter verwenden. –
Ihr Code verwendet keine Bindung, Sie weisen Textfeldern direkt Werte zu. Datenbindung bedeutet, dass Sie dem Steuerelement mitteilen, wo die Daten zu finden sind. Welche Art von Anwendung bauen Sie? ZB in WPF können Sie einen Standardwert im Binding-Ausdruck angeben –
Der Code 'default (ExamplePropertie)' erhält nur den Standardwert dieses 'types', der für jeden Referenztyp immer' null' ist. Das 'DefaultValue' Attribut ist damit nicht verwandt. – Baldrick