标题已经说得很清楚了:
我已经多次阅读到这样设置样式的建议:
<Style TargetType="TextBox">...</Style>
大致相当于:
<Style x:Key="{x:Type TextBox}" TargetType="TextBox">...</Style>
(上一次在对另一个问题的评论中)
两者都应该将样式应用于应用程序中的所有textBox(如果它们被放置在应用程序的资源中当然)
但我在我的应用程序中尝试了两个,只有定义了x:Key的第二个才有效。
对我来说,这似乎很合理,因为第一个没有设置任何x:Key属性,不知道应该应用在哪里,但是第一个语法的意义是什么?
编辑:我应用程序中的代码示例工作正常:
<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>
我写这篇文章是为了解决当你操作现有ComboBox的itemsSource时,comboBoxItems会出现绑定问题。第一段代码可以正常工作,但第二段代码不行。
如果将horizontalContentAlignment设置为Right,您可以轻松地看到这一点。
编辑2: 这段代码只是放在我的App.xaml的资源字典中。用TargetType =“ComboBoxItem”替换TargetType =“{x:Type ComboBoxItem}”没有任何区别。
编辑3: 我刚刚意识到可能忘记了说明一些重要的事情(对此很抱歉):虽然样式是在xaml中定义的,但我实际上在我的代码后台将控件添加到布局中,因为它们是动态添加的。这可能是问题所在...
TargetType="ComboBoxItem"
和TargetType="{x:Type ComboBoxItem}"
之间的结果有什么区别吗? - Rui Monteiro