все в названии:
Я уже не раз читал, что установка такого стиля:
<Style TargetType="TextBox">...</Style>
примерно эквивалентна:
<Style x:Key="{x:Type TextBox}" TargetType="TextBox">...</Style>
(в последний раз в комментарии к другому вопросу )
оба должны применять стиль ко всем текстовым полям в приложении (если они, конечно, добавлены в ресурсы приложения)
но я попробовал оба в своих приложениях, и работает только второе с определенным x: Key.
это выглядит довольно логично для меня, так как первое не знает, где его применять без каких-либоx: свойство ключа установлено, но какой смысл в первом синтаксисе?
Редактировать: пример кода в моем приложении, который отлично работает:
<Style x:Key="{x:Type ComboBoxItem}" TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
и код, который не:
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
Я написал это, чтобы избавиться от проблем связывания, которые вы получаете с comboBoxItems при манипулировании существующим ComboBox itemsSource.И первый код работает нормально, а второй - нет.
Вы можете легко это увидеть, установив горизонтальныйКонтентАльмент вправо
Редактировать 2: Этот код простоположить в словарь ресурсов в моем App.xaml.И замена TargetType = "{x: Type ComboBoxItem}" на TargetType = "ComboBoxItem" не имеет никакого значения
Редактировать 3: Я только что понял, что, возможно, забыл уточнить что-то важное (извинитеоб этом): хотя стили определены в xaml, я фактически добавляю элементы управления к макету в моем коде, так как они добавляются динамически.Может быть, там, где беда ...