首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将datagrid列ActualWidth绑定到textbox MaxLength?

如何将datagrid列ActualWidth绑定到textbox MaxLength?
EN

Stack Overflow用户
提问于 2019-11-17 20:10:20
回答 1查看 60关注 0票数 0

我正在做自定义的datagrid头文件,在头文件中我有一个文本框。问题是我不能确定相对于列宽的文本框宽度。我尝试过通过元素名进行绑定,它可以工作,但无法获得columnWidth。我试着去绑定

代码语言:javascript
运行
复制
public static readonly DependencyProperty ColumnWidthProperty;

但这并不管用。

代码语言:javascript
运行
复制
<Page.DataContext>
    <PDB:UsersViewModel x:Name="vm"/>
</Page.DataContext>

    <!--Datagrid content-->
    <DataGrid x:Name="myGrd" 
              SelectionMode="Single"    
              SelectionUnit="Cell"
              CurrentItem="{Binding SelectedUser, Mode=TwoWay}"
              CurrentColumn="{Binding CurrentColumn, Mode=TwoWay}"
              IsReadOnly="True"
              Grid.Row="1" 
              ItemsSource="{Binding FilteredUserList}" 
              AutoGenerateColumns="True"             
              CanUserAddRows="False"
              >
        <DataGrid.Resources>
            <!--Popup-->
            <ContextMenu x:Key="ContextMenu">
                <ContextMenu.Items>
                    <MenuItem Header="Filter by Selection" Command="{Binding IncludeCommand, Source={x:Reference vm}}"/>
                    <MenuItem Header="Filter exclude Selection" Command="{Binding ExcludeCommand, Source={x:Reference vm}}"/>
                    <MenuItem Header="Remove all Filters" Command="{Binding RemoveAllFiltersCommand, Source={x:Reference vm}}" Visibility="{Binding Filters.Count, Source={x:Reference vm}, Converter={Wpf:VisibilityConverter}}"/>
                </ContextMenu.Items>
            </ContextMenu>
            <!--Custom Datagrid header View-->
            <Style TargetType="DataGridColumnHeader" x:Name="FilterHeader">
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate>
                            <StackPanel HorizontalAlignment="Center" Orientation="Vertical">
                                <TextBox Width="{Binding ElementName=myGrd Path=ColumnWidth}" Margin="2" HorizontalAlignment="Center" />
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{Binding}" HorizontalAlignment="Center"/>
                                    <Button Content="[-F-]" />
                                </StackPanel>
                            </StackPanel>
                        </DataTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </DataGrid.Resources>

        <DataGrid.CellStyle>
            <Style TargetType="DataGridCell">
                <Setter Property="ContextMenu" Value="{StaticResource ContextMenu}"/>
            </Style>
        </DataGrid.CellStyle>
    </DataGrid>
</Grid>
</Page>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-17 20:53:51

代码语言:javascript
运行
复制
<DataTemplate>
    <StackPanel HorizontalAlignment="Center" Orientation="Vertical">
            <TextBox Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridColumnHeader}}, Path=Width}"  
                    Margin="2" HorizontalAlignment="Center" />
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding}" HorizontalAlignment="Center"/>
            <Button Content="[-F-]" />
        </StackPanel>
    </StackPanel>
</DataTemplate>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58900280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档