【问题标题】:Binding DataGridTemplateColumn.Width property to slider将 DataGridTemplateColumn.Width 属性绑定到滑块
【发布时间】:2014-06-14 14:24:47
【问题描述】:

我正在尝试将 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>

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

【问题讨论】:

  • 嗨,@Samuel 我正在努力了解所有问题,请开始聊天,您可以向我解释。
  • @eranotzap 我现在在 wpf 聊天室。
  • 在绑定(在 XAML 或代码中)之后,Width 属性设置为 AUTO。这就是它没有缩小的原因
  • @Samuel 我会在代码中执行此操作,使用一些自定义行为,通过移动 DataGridColumnHeader 的 Thumbs,这听起来像是一种可接受的方法吗?

标签: c# wpf


【解决方案1】:

这似乎有效。不是很漂亮,但很管用。

滑块 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;
        }
    }

【讨论】:

  • 虽然这不是很好,因为它背后的代码确实有效。谢谢
猜你喜欢
  • 2019-07-10
  • 2011-09-15
  • 2017-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
相关资源
最近更新 更多