У нас есть ListBox
с обычным ListBoxItemTemplate
, который показывает некоторую информацию, используя свойство DisplayMemberPath
ListBox
.Как установить всплывающую подсказку contentpresenter в значение, которое оно показывает?
ListBoxItemTemplate
имеет внутри ContentPresenter
.
Все, что нам нужно сделать, это установить свойство Tooltip для ContentPresenter
, чтобы показать то же, что и ContentPresenter
.
Я пытался сделать это:
<ContenPresenter Tooltip={Path Content, RelativeSource={RelativeSource Self}}/>
Но я получаю контекст без DisplayMemberPath
логики (весь объект DataContext).
Как я могу получить значение, указанное в ContentPresenter с применением «DisplayMemberPath»?
Заранее спасибо.
EDIT:
Вот стиль без подсказки (контроль поставил этот стиль и DisplayMemberPath
свойства с переплетом):
<Style x:Key="CheckListBoxStyle" TargetType="{x:Type ListBox}" >
<Setter Property="SelectionMode" Value="Multiple" />
<Setter Property="ItemContainerStyle" Value="{StaticResource CheckListBoxItemStyle}"/>
<Setter Property="Width" Value="177"/>
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Height" Value="70"/>
</Style>
<Style x:Key="CheckListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
<Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
<Setter Property="Padding" Value="2,0,0,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="true">
<CheckBox HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}" Tag="CheckBox1">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</CheckBox>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я не думаю, что можно использовать как свойство DisplayMemberPath и ItemTemplate для ListBox одновременно. Не могли бы вы показать свой код? –
@ DTsawant: сделано. –