public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text", typeof(string), typeof(MyClass), new PropertyMetadata(string.Empty));
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
В этой части вы устанавливаете значение по умолчанию:
new PropertyMetadata(string.Empty)
будет всегда инициированным с пустой строкой.
EDIT:
Ну, я действительно хочу, чтобы решить эту. Я думал, что в решении, кажется, не самый правильный, мы можем попытаться улучшить вместе. ли это в вас базовом классе:
public virtual void DefineDefaultValue(object default)
{
defaultValue = default;
OnPropertyChanged("MyProperty");
}
static object defaultValue;
public static object Define()
{
return defaultValue;
}
public int MyProperty
{
get { return (int)GetValue(MyPropertyProperty); }
set { SetValue(MyPropertyProperty, value); }
}
// Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
public static readonly DependencyProperty MyPropertyProperty =
DependencyProperty.Register("MyProperty", typeof(int), typeof(MainMenuBase), new PropertyMetadata((int)Define()));
В конце концов, сделать это в конструкторе класса:
public void ClassConstructor()
{
DefineDefaultValue("BlaBlaBla");
}
public override void DefineDefaultValue(object default)
{
base.DefineDefaultValue(default);
}
Спасибо за ваш ответ. Но в моем случае мой контроль наследуется от другого элемента управления, который имеет, например, уже TextProperty с строкой DefaultValue.Empty. Я хочу, чтобы теперь в моем контроле менялось значение DefaultValue, например, на «blabla». Не создавайте новое свойство! – BennoDual
О, извините. Я искал ответ, но не нашел. Просто установить локальное значение вам не поможет, не так ли? – Vinicius
Отредактировано прямо сейчас ... посмотрите. – Vinicius