簡體   English   中英

打開列表時顯示每個組合框項目的工具提示 C# WPF XAML MVVM

[英]Displaying a tooltip for each Combobox item when the list is opened C# WPF XAML MVVM

我正在 C# MVVM 中開發一個應用程序我的問題是關於為 ComboBox 綁定到的每個項目添加工具提示。 由於只有兩個項目,我希望它在打開下拉列表並將鼠標懸停在其中一個項目上時顯示工具提示,如下所示:

如果我將鼠標懸停在下拉菜單中的第一個元素上,當我將鼠標懸停在第二個元素上時,我會得到一個帶有“第一項”和“第二項”的工具提示。

ComboBox 放置在 DataGridTemplateColumn -> Cell Template -> DataTemplate

<DataGridTemplateColumn Header="PRĄD POJEMNOŚCIOWY [A]" HeaderStyle="{StaticResource PRAD_POJEMNOSCIOWY}">
 <DataGridTemplateColumn.CellTemplate>
  <DataTemplate>
   <ComboBox Name="PradPojemnosciowyComboBox"
             SelectedValue="{Binding SelectedItem, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
             ItemsSource="{Binding Path=LiniaWyComboBox, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
             IsEditable="True"
             IsReadOnly="False"
             Text="{Binding Prad_pojemnosciowy, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
             IsTextSearchEnabled="False" 
             IsSynchronizedWithCurrentItem="True"
             PreviewKeyDown="PradPojemnosciowyComboBox_OnPreviewKeyDown">

          <ComboBox.Style>
           <Style TargetType="ComboBox">
            <Style.Triggers>
            <Trigger Property="SelectedValue" Value="{x:Null}">
          <Setter Property="SelectedIndex" Value="{Binding LiniaWyComboBox}"/>
            </Trigger>
           </Style.Triggers>
          </Style>
    </ComboBox.Style>
   </ComboBox>
  </DataTemplate>
 </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

更新

工具提示標簽.cs:

using System.ComponentModel;
using System.Collections.ObjectModel;

namespace GPZmodel.UserControlsGraphicGenerators
{
   public class ToolTipLabel : INotifyPropertyChanged
{
    private string _toolTipText;
    public string ToolTipText
    {
        get { return _toolTipText;}
        set
        {
            if (_toolTipText != value)
            {
                _toolTipText = value;
            }
        }
    }
    public ObservableCollection<ToolTipLabel> ToolTipList = new ObservableCollection<ToolTipLabel>()
    {
        new ToolTipLabel() {ToolTipText = "Nazwa1"} ,
        new ToolTipLabel() {ToolTipText = "Nazwa2"} ,

    };

    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

}

您可以使用ItemContainerStyle

<ComboBox Name="PradPojemnosciowyComboBox"
             SelectedValue="{Binding SelectedItem, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
             ItemsSource="{Binding Path=LiniaWyComboBox, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
             IsEditable="True"
             IsReadOnly="False"
             Text="{Binding Prad_pojemnosciowy, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
             IsTextSearchEnabled="False" 
             IsSynchronizedWithCurrentItem="True"
             PreviewKeyDown="PradPojemnosciowyComboBox_OnPreviewKeyDown">
    <ComboBox.Style>
        <Style TargetType="ComboBox">
            <Style.Triggers>
                <Trigger Property="SelectedValue" Value="{x:Null}">
                    <Setter Property="SelectedIndex" Value="{Binding LiniaWyComboBox}"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ComboBox.Style>
    <ComboBox.ItemContainerStyle>
        <Style TargetType="ComboBoxItem">
            <Setter Property="ToolTip">
                <Setter.Value>
                    <TextBlock Text="{Binding}" />
                </Setter.Value>
            </Setter>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>

ToolTipTextBlock綁定到您要顯示的數據對象的任何屬性。

暫無
暫無

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

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