【发布时间】:2016-08-19 10:49:03
【问题描述】:
我正在尝试定义一种在 C# 中为我的属性设置默认值的方法。
我有很多元素 TextBox 和一个按钮来恢复默认值。我希望当用户单击按钮时,TextBox 的内容设置为默认值。
我的想法是将 value 设置为 null 并在 setter 中检查 value,如果 value 为 null,则设置默认值。
这是我的代码:
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;
}
}
}
}
文本框示例:
<TextBox Grid.Row="1" Grid.Column="1"
Style="{StaticResource TextBoxStyle}"
Text="{Binding ExamplePropertie,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
对于每个绑定的元素,我想做这样的事情:
[DefaultValue("default")]
public String ExamplePropertie
{
get
{
return _myProp;
}
set
{
if (value == null)
default(ExamplePropertie); // Not working
else
_myProp = value;
OnPropertyChanged(nameof(ExamplePropertie));
}
}
但是default(ExamplePropertie) 不是这样做的好方法。如何设置使用[DefaultValue(value)] 定义的值?
【问题讨论】:
-
你应该在你的属性旁边引入一个
const值,并在属性和设置器中的代码中使用它。 -
您的代码没有使用绑定,而是直接将值分配给文本框。数据绑定意味着您告诉控件在哪里可以找到数据。您正在构建什么样的应用程序?例如,在 WPF 中,您可以在绑定表达式中指定默认值
-
代码
default(ExamplePropertie)只是获取type的默认值,对于任何引用类型始终为null。DefaultValue属性与此无关。 -
@LasseV.Karlsen 所以我必须通过属性编写一个常量?@PanagiotisKanavos 我添加了绑定部分,它在 WPF 的视图中。我会看看你的解决方案。
标签: c# default-value