gpt4 book ai didi

wpf - 如何绑定(bind)到 ControlTemplate 中的 SelectedItem 属性?

转载 作者:行者123 更新时间:2023-12-03 18:46:35 26 4
gpt4 key购买 nike

考虑以下控件/模板

<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 为真时,还有其他触发器/资源会导致控件展开/折叠。当控件折叠时,我希望 TextBlock "MySelectionInfo"显示所选项目的文本;当它展开时,我希望像平常一样显示项目列表。有没有办法抓取所选项目的文本并将其显示在纯 XAML 的 TextBlock 中?

设置 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”是我正在显示的项目类型的已知属性。

最佳答案

使用 RelativeSource 绑定(bind)是否有效?反而?也许是这样的:

<TextBlock Name="MySelectionInfo" Background="White"
Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type my:ExpandingListBox}}}" />

关于wpf - 如何绑定(bind)到 ControlTemplate 中的 SelectedItem 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com