调整大小时跟踪WPF网格列宽度

时间:2014-05-27 11:44:38

标签: wpf

我正在使用网格分割器来调整wpf应用程序中的列的大小。我希望在完成调整大小时发生一些事件。 Grid Splitter没有任何事件。

所以我尝试使用网格列中的事件

  void col_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        _dragStart = true;
        _currentColWidth = (sender as ColumnDefinition).ActualWidth;

    }

    bool _dragStart;
    double _currentColWidth;
    void col_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        _dragStart = false;
        if ((sender as ColumnDefinition).ActualWidth != _currentColWidth)
        {

        }
    }

这是应用程序的屏幕截图,这些是带有和不带调整大小的两列

enter image description here

2 个答案:

答案 0 :(得分:0)

将gridsplitter位置(或列中的某个宽度)与属性绑定。在Binding中使用延迟选项(.NET 4.5中的新增功能)

这是为Slider-Controls等引入的,它经常更新。将延迟设置为几百毫秒,然后您只获得最终更新值。

在此处查看更多内容:http://www.jonathanantoine.com/2011/09/21/wpf-4-5-part-4-the-new-bindings-delay-property/

答案 1 :(得分:0)

GridSplitter没有任何事件是什么意思?

XAML

<Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="Column1" Width="Auto"/>
        <ColumnDefinition x:Name="Column2" Width="*"/>
    </Grid.ColumnDefinitions>
<GridSplitter x:Name="GridSplitter1" VerticalAlignment="Stretch" DragCompleted="GridSplitter1_DragCompleted" HorizontalAlignment="Right" Grid.Column="0" Background="Black" BorderBrush="Black" BorderThickness="2" Width="2"/>

CODE:

 void GridSplitter1_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
    {
        void GridSplitter1_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
    {
        MessageBox.Show("Column1 : " + Column1.Width + "\n" + "Column2: " + Column2.Width);
    }
    }

enter image description here

对我来说非常好