Рассмотрим следующий элемент управления / шаблон
<my:ExpandingListBox Margin="0,2,0,0" x:Name="TagSearchListBox">
<my:ExpandingListBox.Template>
<ControlTemplate TargetType="{x:Type my:ExpandingListBox}">
<Border Name="MyBorder" BorderThickness="2" BorderBrush="Black">
<Grid>
<TextBlock Name="MySelectionInfo" Background="White" Text="{TemplateBinding SelectedItem}"/>
<ScrollViewer Name="MyScrollViewer" HorizontalScrollBarVisibility="Hidden" Opacity="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" VerticalScrollBarVisibility="Hidden">
<ItemsPresenter Name="MyItemsPresenter"/>
</ScrollViewer>
</Grid>
</Border>
</ControlTemplate>
</my:ExpandingListBox.Template>
</my:ExpandingListBox>
В основном, существуют дополнительные триггеры / ресурсы, которые заставляют элемент управления раскрываться / сворачиваться, когда IsMouseOver имеет значение true. Когда элемент управления свернут, я бы хотел, чтобы TextBlock "MySelectionInfo" отображал текст выбранного элемента; когда он развернется, я бы хотел, чтобы список элементов отображался как обычно. Есть ли способ получить текст выбранного элемента и отобразить его в TextBlock в чистом XAML?
Setting Text = "{TemplateBinding SelectedItem}" выполняется, но ничего не отображается.
РЕДАКТИРОВАТЬ (решение):
<TextBlock Name="MySelectionInfo" Background="White">
<TextBlock.Text>
<Binding Path="SelectedItem.Name">
<Binding.RelativeSource>
<RelativeSource Mode="FindAncestor" AncestorType="{x:Type my:ExpandingListBox}"/>
</Binding.RelativeSource>
</Binding>
</TextBlock.Text>
</TextBlock>
". Name" - это известное свойство типа отображаемого элемента.