簡體   English   中英

在UIResources中的WPF組合框樣式中將SelectedItem設置為ToolTip

[英]Set SelectedItem as ToolTip in WPF Combo Box Style in UIResources

我在UIResources中定義了一個ComboBox樣式,並在我的應用程序中的所有控件上使用了它,如下所示:

<Style x:Name="combo" TargetType="{x:Type ComboBox}">
        <Setter Property="UIElement.SnapsToDevicePixels" Value="True"/>
        <Setter Property="FrameworkElement.OverridesDefaultStyle" Value="True"/>
        <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
        <Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
        <Setter Property="TextElement.Foreground" Value="White"/>
        <Setter Property="FrameworkElement.FocusVisualStyle" Value="{x:Null}"/>
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate TargetType="ComboBox">
                    <Grid>
                        <ToggleButton
                                ClickMode="Press"
                                Name="ToggleButton"
                                IsChecked="{Binding Path=IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"
                                Focusable="False"
                                Grid.Column="2"
                                Template="{StaticResource ComboBoxToggleButtonTemplate}"/>
                        <ContentPresenter
                                Margin="3,3,23,3"
                                HorizontalAlignment="Left"
                                Name="ContentSite"
                                VerticalAlignment="Center"
                                ContentTemplate="{TemplateBinding ComboBox.SelectionBoxItemTemplate}"
                                Content="{TemplateBinding ComboBox.SelectionBoxItem}"
                                IsHitTestVisible="False" />
                        <TextBox
                                Margin="3,3,23,3"
                                Visibility="Hidden"
                                HorizontalAlignment="Left"
                                Name="PART_EditableTextBox"
                                Background="Transparent"
                                VerticalAlignment="Center"
                                Style="{x:Null}"
                                IsReadOnly="False"
                                Focusable="True"
                                xml:space="preserve"
                                Template="{StaticResource ComboBoxTextBoxTemplate}"/>
                        <Popup
                                Placement="Bottom"
                                Name="Popup"
                                Focusable="False"
                                AllowsTransparency="True"
                                IsOpen="{TemplateBinding ComboBox.IsDropDownOpen}"
                                PopupAnimation="Fade" >
                            <Grid
                                    MinWidth="{TemplateBinding FrameworkElement.ActualWidth}"
                                    MaxHeight="{TemplateBinding ComboBox.MaxDropDownHeight}"
                                    Name="DropDown"
                                    SnapsToDevicePixels="True">
                                <Border
                                        BorderBrush="#FF404040"
                                        BorderThickness="1,1,1,1"
                                        Name="DropDownBorder"
                                        Background="#FF404040" />
                                <ScrollViewer
                                        Margin="4,6,4,6"
                                        SnapsToDevicePixels="True">
                                    <ItemsPresenter
                                            KeyboardNavigation.DirectionalNavigation="Contained"/>
                                </ScrollViewer>
                            </Grid>
                        </Popup>
                           <Border x:Name="border" 
                                BorderBrush="{TemplateBinding BorderBrush}" 
                                BorderThickness="{TemplateBinding BorderThickness}" 
                                SnapsToDevicePixels="True"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="ItemsControl.HasItems" Value="False">
                            <Setter Property="FrameworkElement.MinHeight" TargetName="DropDownBorder" Value="95"/>
                        </Trigger>
                        <Trigger Property="UIElement.IsEnabled" Value="False">
                            <Setter Property="TextElement.Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
                        </Trigger>
                        <Trigger Property="ItemsControl.IsGrouping" Value="True">
                            <Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
                        </Trigger>
                        <Trigger Property="Window.AllowsTransparency" SourceName="Popup" Value="True">
                            <Setter Property="FrameworkElement.Margin" TargetName="DropDownBorder" Value="0,0,0,0"/>
                        </Trigger>
                        <Trigger Property="ComboBox.IsEditable" Value="True">
                            <Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
                            <Setter Property="UIElement.Visibility" TargetName="PART_EditableTextBox" Value="Visible"/>
                            <Setter Property="UIElement.Visibility" TargetName="ContentSite" Value="Hidden"/>
                        </Trigger>
                        <Trigger Property="IsKeyboardFocusWithin" Value="True">
                            <Setter Property="Opacity" TargetName="border" Value="1"/>
                            <Setter Property="BorderBrush" Value="DodgerBlue"/>
                            <Setter Property="BorderThickness" Value="1"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

現在我有一個要求也顯示所選項目作為工具提示。 我可以以這種樣式設置工具提示嗎,以便當用戶選擇分配給工具提示的任何項目時。是否有可能我可以以UIResource樣式設置工具提示,還是必須在每個組合框中都進行設置?

提前致謝

根據要綁定的項目類型,定義方式以及要在工具提示中顯示的內容,您可以在Style中添加<Setter />以將ToolTip屬性綁定到SelectedItem屬性:

<Setter Property="ToolTip" Value="{Binding SelectedItem, RelativeSource={RelativeSource Self}}" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM