【C#/WPF】UI控件的拖拽/拉伸
需求①:控件拖拽——按住鼠标,可自由拖拽控件。
方法:目前看到的办法有两种。
- 使用ZoomableCanvas:http://www.cnblogs.com/gnielee/archive/2011/03/09/wpf-zoomablecanvas.html
- 使用微软原生的Thumb类(名称空间System.Windows.Controls.Primitives):https://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.thumb%28v=vs.90%29.aspx?f=255&MSPPError=-2147217396
需求②:控件拉伸——鼠标位于控件边缘时,鼠标变为可拉伸的符号,按住鼠标左键可自由拖动以拉伸控件。
方法:做WPF项目时,看到WAF框架的Example中有一个类似的用法,记录一下关键部分。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="300"
MinWidth="{Binding Content.MinWidth, ElementName=bookViewPresenter}"/>
</Grid.ColumnDefinitions>
<ContentControl Content="{Binding ShellService.BookListView}" Grid.Row="0" Grid.Column="0" Margin="0,0,5,0"/>
<ScrollViewer VerticalScrollBarVisibility="Auto" Grid.Row="0" Grid.Column="1">
<ContentControl x:Name="bookViewPresenter" Content="{Binding ShellService.BookView}" Focusable="False"/>
</ScrollViewer>
<GridSplitter HorizontalAlignment="Right" VerticalAlignment="Stretch" Width="4" Grid.Row="0" Grid.Column="0"/>
</Grid>
只看源码的关键点:
- 将控件包裹在Grid内,使用< GridSplitter >。
拉伸前后的效果如下图: