将某些东西应用于多个组合框

时间:2013-07-08 09:04:08

标签: .net wpf combobox styles

我不确定申请风格是否会是一个更好的标题,所以我做了它应用的东西。 下面是某些 xaml ,我用它来删除 WPF 应用程序中ComboBox的默认箭头。

<ComboBox ItemsSource="{Binding Path=ConnTypes,Mode=OneTime, 
    UpdateSourceTrigger=PropertyChanged}" SelectedIndex="0">
    <ComboBox.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">0</sys:Double>
    </ComboBox.Resources>
</ComboBox>

现在我想对所有ComboBox执行同样的操作,而不是为所有<ComboBox.Resources>复制同一段ComboBox。我只想定义一次(<ComboBox.Resources>),这应该应用于窗口中的所有ComboBox

你能告诉我一个方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

通过Window.Resources添加Style而不x:key添加到ComboBox,从而隐含地应用于Window中的所有<Window.Resources> <Style TargetType="{x:Type ComboBox}"> <Style.Resources> <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">0</sys:Double> </Style.Resources> </Style> </Window.Resources> 控件

ComboBox

<强>旁注:

请记住,您当前的方法“可以”隐藏SystemParameters.VerticalScrollBarWidthKey的箭头,但它确实比这更多。所以请注意,你还没有。

0设置为ComboBox将因此“隐藏”Popup的{​​{1}}中的垂直滚动条,并使用与其宽度相同的系统参数。因此,如果不希望出现这种情况,最好还是修改ComboBox模板,然后将“箭头”Path设置为Transparent填充,或者将其全部删除。