wpf - RelativeSource FindAncestor 问题

标签 wpf listview binding relativesource

这是代码:

<GridViewColumn DisplayMemberBinding="{Binding Path=BookId}" Width="100">
    <GridViewColumn.Header>
        <Border BorderBrush="Black">
            <TextBlock Width="{Binding RelativeSource=
                                       {RelativeSource FindAncestor, 
                                       AncestorType={x:Type GridViewColumn}}, 
                                       Path=Width}" Text="ID">
                <TextBlock.ContextMenu>
                    <ContextMenu>item1</ContextMenu>
                </TextBlock.ContextMenu>
            </TextBlock>
            </Border>
    </GridViewColumn.Header>
</GridViewColumn>

基本上我要做的是使标题中的 TextBlock 遵循整个列的宽度。

它不起作用:文本 block 的宽度始终与里面的文本匹配。有任何想法吗?...
提前致谢!

最佳答案

你的代码有两个问题

  • GridViewColumn 不是 TextBox 的视觉祖先,它的祖先是 GridViewColumnHeader
  • 您应该绑定(bind)到 GridViewColumnHeader 的 ActualWidth,而不是 Width(如果未指定 Width,它将是一个无效数字)

  • 所以你的代码变成:
                  <GridViewColumn
                                DisplayMemberBinding="{Binding Path=BookId}"
                                Width="100">
                    <GridViewColumn.Header>
                        <Border BorderBrush="Black" >
                            <TextBlock Text="ID" Width="{Binding RelativeSource=
                                                            {RelativeSource FindAncestor, 
                                                            AncestorType={x:Type GridViewColumnHeader}}, 
                                                            Path=ActualWidth}">
                                <TextBlock.ContextMenu>
                                    <ContextMenu>item1</ContextMenu>
                                </TextBlock.ContextMenu>
                            </TextBlock>
                            </Border>
                    </GridViewColumn.Header>
                </GridViewColumn>
    

    关于wpf - RelativeSource FindAncestor 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1322729/

    相关文章:

    android - ImageView 比例类型在列表 Activity 中不起作用

    c# - WPF/C# 组合框数据绑定(bind)

    WPF 单选按钮(二)(绑定(bind)到 boolean 值)

    wpf - 从用户控件绑定(bind)到父用户控件的属性

    c# - 在 WPF 中使用具有多个值的 DataTrigger

    list - 无法使用列表创建ListView.builder

    wpf - 为什么发布无法发布System.Net.Http.dll?

    listview - 将 <ul> 更改为 <ul 数据角色 ="listview">

    wpf - 如何定义 x :Key for resource in one place and use it in XAML and code behind

    c# - 如果 XAML 中的字符串太长,则自动在标签中下一行