У меня есть WatermarkTextBox, который наследует TextBox, и у меня есть x: Name = "TestASearch", который вызывается в listview для отображения поиска, полученного из метода textboxsearch_TextChanged.Как использовать один и тот же водяной знак TextBox
<controls:WatermarkTextBox x:Name="TestASearch" Grid.Column="2" Grid.Row="0"
Margin="10,61,0,10" SelectAllOnGotFocus="True" Background="White"
TextChanged="textboxsearch_TextChanged">
<controls:WatermarkTextBox.Watermark>
<TextBlock FontStyle="Italic" Text="Enter search text…" Width="116"/>
</controls:WatermarkTextBox.Watermark>
WatermarkTextBox класс
public WatermarkTextBox()
{
FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(WatermarkTextBox), new FrameworkPropertyMetadata(typeof(WatermarkTextBox)));
}
Теперь я хочу использовать ту же концепцию, кроме того, что я хочу различных х: Name = TestBSearch и хотел использовать TextChanged = "textboxsearch_TextChanged"
<controls:WatermarkTextBox x:Name="TestBSearch" Grid.Column="2" Grid.Row="0"
Margin="10,61,0,10" SelectAllOnGotFocus="True" Background="White"
TextChanged="textboxsearch_TextChanged">
<controls:WatermarkTextBox.Watermark>
<TextBlock FontStyle="Italic" Text="Enter search text…" Width="116"/>
</controls:WatermarkTextBox.Watermark>
</controls:WatermarkTextBox>
Когда я пытаюсь это сделать, я получаю сообщение об ошибке «PropertyMetadata уже зарегистрирован fo r type 'WatermarkTextBox'. " Как я могу повторно использовать один и тот же код?
Благодаря
Спасибо ... Это было именно то, что было причиной ошибки – HXD
КСТАТИ Почему это так важно, чтобы изменить его от public to static? кроме ошибки – HXD
Статический конструктор вызывается только один раз. Как и в обычном конструкторе, и создал два экземпляра класса, вы дважды переопределяли метаданные для этого класса - это невозможно. – Lee