Betrachten Sie die folgende Steuerung/TemplateWie binde ich an die SelectedItem-Eigenschaft in einer ControlTemplate?
<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>
Grundsätzlich gibt es zusätzliche Trigger/resources, die die Steuerung verursachen/Kollaps zu erweitern, wenn IsMouseOver wahr ist. Wenn das Steuerelement minimiert ist, möchte ich den TextBlock "MySelectionInfo", um den Text des ausgewählten Elements anzuzeigen; Wenn es erweitert wird, möchte ich, dass die Liste der Elemente normal angezeigt wird. Gibt es eine Möglichkeit, den Text des ausgewählten Objekts zu erfassen und es im TextBlock in reinem XAML anzuzeigen?
Einstellung Text = "{TemplateBinding SelectedItem}" läuft, zeigt aber nichts an.
EDIT (Lösung):
<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" ist eine bekannte Eigenschaft des Typs von Artikel Ich bin angezeigt wird.
Großartig gearbeitet! Siehe oben für Lösung :) – Pwninstein