我正在使用网格分割器来调整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)
{
}
}
这是应用程序的屏幕截图,这些是带有和不带调整大小的两列
答案 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);
}
}
对我来说非常好