San*_*uze 2 c# wpf xaml styles
与这个问题类似,我正在尝试尽可能轻松地设置ComboBoxItems的样式。但是,我正在根据此处找到的ComboBox的默认样式制作自定义样式。
<Style x:Key="MultiComboBox" TargetType="{x:Type ComboBox}">
<Style.Resources>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="Style" Value="{StaticResource MultiComboBoxItem}"/>
</Style>
</Style.Resources>
<Setter Property="SnapsToDevicePixels" Value="true" />
<!--<Setter Property="OverridesDefaultStyle" Value="true" />-->
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
...
...
</Style>
.
.
.
<ComboBox Style="{StaticResource MyComboBox}">
<ComboBoxItem x:Name="First">First</ComboBoxItem>
<ComboBoxItem x:Name="Second">Second</ComboBoxItem>
<ComboBoxItem x:Name="Third">Third</ComboBoxItem>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
我将其添加<Style.Resources>到顶部,希望这里只需要一个引用,而不是将其单独添加到嵌套元素中,或者甚至首先需要将其添加到元素中。另外,我评论了所有的OverridesDefaultStyle二传手。
但是,然后我得到一个XAMLparseexception,“不允许Style对象影响所应用对象的Style属性”。该错误本身是有道理的,但是我认为自从定位以来,ComboBoxItem它应该可以工作。有没有解决的办法?
不允许使用样式对象影响所应用对象的样式属性
问题线如下:
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="Style" Value="{StaticResource MultiComboBoxItem}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
尝试将它们重写为
<Style TargetType="{x:Type ComboBoxItem}" BasedOn="{StaticResource MultiComboBoxItem}">
</Style>
Run Code Online (Sandbox Code Playgroud)
或更好地使用ItemContainerStyle属性:
<Style x:Key="MultiComboBox" TargetType="{x:Type ComboBox}">
<Setter Property="ItemContainerStyle" Value="{StaticResource MultiComboBoxItem}" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<!--<Setter Property="OverridesDefaultStyle" Value="true" />-->
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
</Style>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |