Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何将datagrid列ActualWidth绑定到textbox MaxLength?_Wpf_Binding_Datagrid - Fatal编程技术网

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

Wpf 如何将datagrid列ActualWidth绑定到textbox MaxLength?,wpf,binding,datagrid,Wpf,Binding,Datagrid,我正在做自定义datagrid标题,在标题中我有一个文本框。问题是我无法确定文本框的宽度相对于列宽。我尝试按元素名绑定,但无法获得columnWidth。我试着把它绑起来 public static readonly DependencyProperty ColumnWidthProperty; 但这不起作用 <Page.DataContext> <PDB:UsersViewModel x:Name="vm"/> </Page.DataContext>

我正在做自定义datagrid标题,在标题中我有一个文本框。问题是我无法确定文本框的宽度相对于列宽。我尝试按元素名绑定,但无法获得columnWidth。我试着把它绑起来

public static readonly DependencyProperty ColumnWidthProperty;
但这不起作用

<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>



使用
Path=ActualWidth
切换
Path=Width
,它应该可以:}非常感谢您的帮助。但当用户调整COLLMN的宽度时,如何保持磁道长度?:)
<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>