WPF组合框样式不具有绑定属性

johnstart2312

在我的WPF项目中,我有以下ComboBox样式:

<Style x:Key="ComboBoxTextBoxStyle" TargetType="{x:Type TextBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBox}">
                    <Grid>
                        <Border CornerRadius="5,0,0,5"
                            
                            Background="{TemplateBinding Background}"
                                >
                            <ScrollViewer x:Name="PART_ContentHost"/>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="comboboxitem" TargetType="ComboBoxItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ComboBoxItem">
                    <Border CornerRadius="3" Height="30" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
                        <ContentPresenter VerticalAlignment="Center"/>
                    </Border>

                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" >
                                <Setter.Value>
                                    <SolidColorBrush Color="{DynamicResource BackgroundColour}"/>
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>



    <Style x:Key="combobox" TargetType="{x:Type ComboBox}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ComboBox}">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition MaxWidth="18"/>
                        </Grid.ColumnDefinitions>
                        <TextBox Background="{TemplateBinding Background}" Name="PART_EditableTextBox" IsReadOnly="{TemplateBinding IsReadOnly}" FontSize="{TemplateBinding FontSize}" Style="{StaticResource ComboBoxTextBoxStyle}" Foreground="White" VerticalAlignment="Center" Height="{TemplateBinding Height}"/>
                        <ToggleButton Grid.Column="1" Background="{TemplateBinding Background}" Margin="0" Height="{TemplateBinding Height}" Focusable="False" Foreground="White" IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press">
                            <ToggleButton.Template>
                                <ControlTemplate>
                                    <Border BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="0 5 5 0">
                                        <Border.Background>
                                            <SolidColorBrush Color="{TemplateBinding Background}"/>
                                        </Border.Background>
                                        <Path Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Data="M 0 0 L 4 4 L 8 0 Z" Fill="#DF464B" />
                                    </Border>
                                </ControlTemplate>
                            </ToggleButton.Template>

                        </ToggleButton>
                        <ContentPresenter Name="ContentSite"
                                      Content="{TemplateBinding SelectionBoxItem}"
                                      ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                                      ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                                      VerticalAlignment="Center"
                                      HorizontalAlignment="Left"
                                      Margin="5,0,0,0"/>
                        <Popup Name="Popup"
                               Placement="Bottom"
                               IsOpen="{TemplateBinding IsDropDownOpen}"
                               AllowsTransparency="True" 
                               Focusable="False"
                               PopupAnimation="Slide">
                            <Grid Name="DropDown"
                                  SnapsToDevicePixels="True"                
                                  MinWidth="{TemplateBinding ActualWidth}"
                                  MaxHeight="{TemplateBinding MaxDropDownHeight}">
                                <Border 
                                    x:Name="DropDownBorder"
                                    BorderThickness="1"
                                    CornerRadius="0 0 5 5"
                                    Background="{TemplateBinding Background}"
                                    BorderBrush="#DF464B"/>
                                <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True">
                                    <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained">

                                    </StackPanel>
                                </ScrollViewer>
                            </Grid>
                        </Popup>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

但是,在箭头下拉部分(样式为边框)上,我尝试使用设置Background属性以绑定到模板的属性,<SolidColorBrush Color="{TemplateBinding Background}"/>但它不起作用。我猜它是与事实,即它正试图获得Background从实际边界,而不是当我打电话组合框是这样的:<Combobox Style="combobox" Background="DesiredBackground"/>我怎样才能使它绑定到正确的背景?

罗兰德

您应该将Border的Background属性而不是Color绑定到ComboBox Background属性。

它也可以与“ TemplateBinding”一起使用,但是随后您将绑定到ToggleButton而不是ComboBox。但是由于ToggleButton从ComboBox中获取其Background,所以它仍然可以正常工作。

   <Border BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="0 5 5 0"
           Background="{Binding Background, RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}}">

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何选择所有不具有align属性的p和其他样式选项

来自分类Dev

JavaFX:不具有JavaFX样式属性的可编辑TableView

来自分类Dev

不具有[DataMember]属性与具有[IgnoreDataMember]属性

来自分类Dev

不具有[DataMember]属性与具有[IgnoreDataMember]属性

来自分类Dev

如何读取不具有LINES属性的xaml文本框的最后一行

来自分类Dev

如何将样式应用于所有文本输入且不具有“ size”属性的样式?

来自分类Dev

如何选择不具有ID属性的元素?

来自分类Dev

JSF:PropertyNotFoundException类“不具有属性”

来自分类Dev

使用querySelector选择不具有值属性的输入

来自分类Dev

检查元素是否不具有jQuery属性

来自分类Dev

发布/订阅推送消息不具有messageId属性

来自分类Dev

使用XPath查找不具有ALT属性的图像

来自分类Dev

如何遍历不具有id属性的对象列表

来自分类Dev

如何限制构造型不具有属性?

来自分类Dev

具有@JsonIgnore的属性与不具有注释的属性之间有什么区别?

来自分类Dev

如何滤除具有特定属性的元素(或保留不具有该属性的元素)

来自分类Dev

Vaadin组合框具有不同的属性以显示和绑定

来自分类Dev

查找具有特定名称且不具有特定属性的在前同级

来自分类Dev

XSL计算父节点不具有具有特定属性的子节点

来自分类Dev

具有或不具有自动属性的对象反序列化的差异

来自分类Dev

Tinkerpop:选择不具有具有属性的顶点的路径的顶点

来自分类Dev

选择具有不具有给定属性的子元素的元素的子元素

来自分类Dev

查找具有特定名称且不具有特定属性的在前同级

来自分类Dev

如何使用具有净tcp绑定和不具有mex绑定的WCF服务

来自分类Dev

获取所有不具有以value开头的data属性的列表项

来自分类Dev

如何从数组中删除所有不具有特定属性的对象?

来自分类Dev

角组件引用不具有所有属性

来自分类Dev

“ WSGIRequest”对象不具有带有自定义注册表单的属性“ post”

来自分类Dev

AttributeError:'module'对象不具有带有nltk.LogicParser()的属性'LogicParser'

Related 相关文章

  1. 1

    如何选择所有不具有align属性的p和其他样式选项

  2. 2

    JavaFX:不具有JavaFX样式属性的可编辑TableView

  3. 3

    不具有[DataMember]属性与具有[IgnoreDataMember]属性

  4. 4

    不具有[DataMember]属性与具有[IgnoreDataMember]属性

  5. 5

    如何读取不具有LINES属性的xaml文本框的最后一行

  6. 6

    如何将样式应用于所有文本输入且不具有“ size”属性的样式?

  7. 7

    如何选择不具有ID属性的元素?

  8. 8

    JSF:PropertyNotFoundException类“不具有属性”

  9. 9

    使用querySelector选择不具有值属性的输入

  10. 10

    检查元素是否不具有jQuery属性

  11. 11

    发布/订阅推送消息不具有messageId属性

  12. 12

    使用XPath查找不具有ALT属性的图像

  13. 13

    如何遍历不具有id属性的对象列表

  14. 14

    如何限制构造型不具有属性?

  15. 15

    具有@JsonIgnore的属性与不具有注释的属性之间有什么区别?

  16. 16

    如何滤除具有特定属性的元素(或保留不具有该属性的元素)

  17. 17

    Vaadin组合框具有不同的属性以显示和绑定

  18. 18

    查找具有特定名称且不具有特定属性的在前同级

  19. 19

    XSL计算父节点不具有具有特定属性的子节点

  20. 20

    具有或不具有自动属性的对象反序列化的差异

  21. 21

    Tinkerpop:选择不具有具有属性的顶点的路径的顶点

  22. 22

    选择具有不具有给定属性的子元素的元素的子元素

  23. 23

    查找具有特定名称且不具有特定属性的在前同级

  24. 24

    如何使用具有净tcp绑定和不具有mex绑定的WCF服务

  25. 25

    获取所有不具有以value开头的data属性的列表项

  26. 26

    如何从数组中删除所有不具有特定属性的对象?

  27. 27

    角组件引用不具有所有属性

  28. 28

    “ WSGIRequest”对象不具有带有自定义注册表单的属性“ post”

  29. 29

    AttributeError:'module'对象不具有带有nltk.LogicParser()的属性'LogicParser'

热门标签

归档