绑定DataGridTemplateColumn.滑块的宽度属性

本文关键字:属性 DataGridTemplateColumn 绑定 | 更新日期: 2023-09-27 18:08:32

我正在尝试将DataGridTemplateColumn的宽度绑定到滑块以调整列的宽度。

当有其他列显示水平滚动条时,列的大小没有影响。下面是工作示例代码:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <x:Array x:Key="strings" Type="sys:String" 
            xmlns:sys="clr-namespace:System;assembly=mscorlib">
            <sys:String>One</sys:String>
            <sys:String>Two</sys:String>
        </x:Array>
    </Window.Resources>
    <StackPanel>
        <Slider Name="ImgWidth" Minimum="10" Maximum="500" TickFrequency="1" IsSnapToTickEnabled="True" Value="100"></Slider>
          <DataGrid ItemsSource="{StaticResource strings}" CanUserAddRows="False" CanUserDeleteRows="False" IsSynchronizedWithCurrentItem="True" AutoGenerateColumns="False">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Image" Width="{Binding ElementName=ImgWidth, Path=Value}" >
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Border BorderBrush="Red" BorderThickness="5" Height="100" Width="{Binding ElementName=ImgWidth, Path=Value}"></Border>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="Something else" Binding="{Binding}"/>
                <DataGridTextColumn Header="Something else" Binding="{Binding}"/>
                <DataGridTextColumn Header="Something else" Binding="{Binding}"/>
                <DataGridTextColumn Header="Something else" Binding="{Binding}"/>
                <DataGridTextColumn Header="Something else" Binding="{Binding}"/>
                <DataGridTextColumn Header="Something else" Binding="{Binding}"/>
                <DataGridTemplateColumn Width="*" />
            </DataGrid.Columns>
        </DataGrid>
    </StackPanel>
</Window>

图像的大小调整工作时,移动滑块,但是,无论我是否设置第一列的宽度自动或绑定,它不会在两个方向上缩放,当我移动滑块。当水平滚动条不可见时,增加宽度工作,但缩小不。当显示水平滚动条时,调整列的大小在任何方向上都不起作用。

绑定DataGridTemplateColumn.滑块的宽度属性

这似乎行得通。不是很漂亮,但是很好用。

滑块x:Name="ImgWidth" Minimum="10" Maximum="500" TickFrequency="1" IsSnapToTickEnabled="True" Value="100" ValueChanged="ImgWidth_ValueChanged">

DataGrid x:Name="dg"…

和代码中的

    private void ImgWidth_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
    {
        if (dg != null)
        {
            dg.Columns[0].Width = ImgWidth.Value;
        }
    }