[WPF] GridSplitter 컨트롤 Position 값 가져오기
- C#/WPF
- 2021. 5. 20. 00:00
1. 소개
안녕하세요.
오늘은 WPF 에서 GridSplitter 컨트롤 사용 방법에 대해서 알려 드리려고 합니다.
그 중에서도, GridSplitter 컨트롤의 변경된 사이즈, 즉 Position 값을 가져오는 방법에 대해서 알려 드리려고 해요.
최근에 회사에서 프로젝트를 하면서 GridSplitter 컨트롤의 변경된 사이즈를 그대로 저장하는 기능을 개발한 적이 있었는데요. 이때 사용했던 기술이니까 필요하신 분들은 참고해 주시면 좋겠습니다.^^
총 1개의 이벤트 핸들러 를 이용하시면 됩니다.
2. 사용되는 이벤트 핸들러
- DragCompleted 이벤트 핸들러
사용되는 이벤트 핸들러는 1개로써 DragCompleted 이벤트 핸들러 를 이용하여 GridSplitter 컨트롤의 변경된 사이즈 Position 값을 얻을 수 있습니다.
그럼 예제를 통해서 어떻게 변경된 사이즈를 가져오는 지 보여 드리겠습니다.
3. 예제 코드
MainWindow.xaml
<Window x:Class="WpfApp8.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp8"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="50*" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Grid.Column="1" Background="Tan"/>
<GridSplitter Grid.Row="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Background="Black"
ShowsPreview="True"
Height="5"
DragCompleted="GridSplitter_DragCompleted"
DragDelta="GridSplitter_DragDelta"
/>
<StackPanel Grid.Row="2" Grid.Column="0" Background="Brown"/>
</Grid>
</Window>
MainWindow.xaml.cs
using System.Windows;
namespace WpfApp8
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void GridSplitter_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
MessageBox.Show($"가로 변경 사이즈 : {e.HorizontalChange}, 세로 변경 사이즈 : {e.VerticalChange}");
}
private void GridSplitter_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
//MessageBox.Show($"가로 변경 사이즈 : {e.HorizontalChange}, 세로 변경 사이즈 : {e.VerticalChange}");
}
}
}
4. 실행 결과
- 위와 같이 변경된 사이즈를 DragCompleted 이벤트 핸들러 를 통해서 얻은 후에, 해당 사이즈를 저장하고 있다가 프로그램을 실행시킬 때 해당 사이즈를 그대로 가져와 실행시키면 변경된 사이즈대로 다시 프로그램을 실행시키게 개발 할 수 있습니다.
- DragCompleted 이벤트 핸들러 말고, DragDelta 이벤트 핸들러 를 이용하여 비슷한 동작을 구현할 수 있으니까 상황에 맞는 이벤트 핸들러를 이용하여 GridSplitter의 위치를 얻어 오시면 되겠습니다.
728x90
'C# > WPF' 카테고리의 다른 글
[WPF] WPF 관리자 권한으로 실행하기 (0) | 2021.09.28 |
---|---|
[WPF 문법] WPF MVVM 패턴 이용하여 오라클 DB 연동하기 (2) | 2021.09.19 |
20장. WPF 계산기, MVVM, Command, 데이터바인딩이용 (2) | 2021.05.17 |
19장. WPF MVVM, ListBox의 컬렉션 정렬, 필터링, 탐색 실습(ListCollectionView) (0) | 2021.05.17 |
18장. WPF IValueConverter를 이용한 데이터바인딩, DataType이 다른 경우의 Data Binding (0) | 2021.05.15 |
이 글을 공유하기