【C#/WPF】UI控件的拖拽/拉伸

来源:互联网 发布:免费顶级域名 编辑:程序博客网 时间:2024/05/22 14:18

需求①:控件拖拽——按住鼠标,可自由拖拽控件。

方法:目前看到的办法有两种。

  • 使用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 >。

拉伸前后的效果如下图:
拉伸前

拉伸后

0 0
原创粉丝点击