Я хочу связать свойство ToolTipText с самой всплывающей подсказкой, чтобы оно могло отображать некоторую текстовую информацию для каждого ComboBoxItem. К сожалению, я получаю только пустой TextBlock и эту ошибку в окне вывода:
Ошибка System.Windows.Data: 40: Ошибка пути BindingExpression:
Свойство 'ToolTipText' не найдено для объекта '' Double '
(HashCode = 1076756480). BindingExpression: Path = ToolTipText;
DataItem = 'Double' (HashCode = 1076756480); целевой элемент - «TextBlock»
(Имя = ''); Целевым свойством является «Текст» (тип «Строка»)
ComboBox:
<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">
<EventSetter Event="MouseMove" Handler="OnMouseHover" />
<Setter Property="ToolTip">
<Setter.Value>
<TextBlock Text="{Binding ToolTipText , RelativeSource={RelativeSource Self}}" >
</TextBlock>
</Setter.Value>
</Setter>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
Метод - OnMouseHover:
private void OnMouseHover (object sender, MouseEventArgs e)
{
var lineSelected = (modelGPZ.GetLineWyList().FirstOrDefault(x => x.isSelected == true));
ComboBoxItem item = sender as ComboBoxItem;
if ((double)item.Content == lineSelected.LiniaWyComboBox[0])
{
//ToolTipTextList.Add("FirstItem");
ToolTipText = "ONE!!!!!!!!!!!!!!";
OnPropertyChanged("LiniaWyComboBox");
OnPropertyChanged("ToolTipText");
}
else
{
//ToolTipTextList.Add("SecondItem");
ToolTipText = "TWO!!!!!!!!!!!!!!";
OnPropertyChanged("LiniaWyComboBox");
OnPropertyChanged("ToolTipText");
}
}
ToolTipText:
private string _toolTipText;
public string ToolTipText
{
get { return _toolTipText; }
set {
if (_toolTipText!=value)
{
_toolTipText = value;
OnPropertyChanged("ToolTipText");
}
else
{
_toolTipText = "";
}
}
}
DataGrid:
<DataGrid Style="{StaticResource AzureDataGrid}"
Grid.Row="1"
VerticalAlignment="Stretch"
SelectedIndex="0"
Name="LinieWyDatagrid"
ItemsSource="{Binding LiniaWyComboBox, RelativeSource={RelativeSource AncestorType=Window}, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserSortColumns="True"
AutoGenerateColumns="False"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
SelectionChanged="LinieWyDatagrid_SelectedCellsChanged"
SelectionMode="Single">