μλ νμΈμ. κ°μΈ νλ‘μ νΈ μ§ν μ€μ, λ§μ°μ€ μ΄λ²€νΈμ κ΄λ ¨λμ λ¬Έμλ립λλ€.
.net6.0, vs 2022λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
무μμ νκ³ μ νλμ§
νμ¬, λ§μ°μ€ λ²νΌμ λλ₯Έ μνμμ Windowλ₯Ό λλκ·Έν λ, MouseMove μ΄λ²€νΈλ₯Ό λ°μμν€λ €κ³ ν©λλ€.
νμ¬ μμ±ν μ½λ μ€ λ¬Έμ κ° λλ λΆλΆ
λλκ·Έλ₯Ό νλ©΄ Windowκ° λλκΉ λλ κ²κΉμ§λ ꡬνμ λ§μ³€μ΅λλ€. λ€μμΌλ‘ ꡬνν μ¬νμ΄ λλκ·Έλ₯Ό ν λ, Windowμ νμ¬ μ’νκ°μ λ°μμ€λ €λ ν μ€νΈλ₯Ό μ§ν μ€μ, λ§μ°μ€κ° λλ¦° μνμμ MouseMove μ΄λ²€νΈκ° μμ λ°μνμ§ μλ νμμ΄ μμ΅λλ€. λ§μ°μ€ λ²νΌμ λλ₯΄μ§ μμ μνμμ μ΄λ²€νΈ ν¨μκ° λμνκ³ μ.
νλ‘μ νΈ μ§ν μ€μ Ctrlν€λ₯Ό λλ₯Έ μνμμ MouseUp, Down μ΄λ²€νΈ λμμ ꡬνν λκ° μμλλ°μ. μ λλ‘ λμμ νμ§ μλ νμμ΄ μ§κΈ μν©κ³Ό λΉμ·ν νμμΈ κ±° κ°λ€κ³ μκ°μ΄ λ©λλ€.
κ΄λ ¨λ κ°λ΅ν μ΄λ²€νΈ μ½λλ μλμ κ°μ΅λλ€.
<Window>
<behavior:Interaction.Triggers>
<behavior:EventTrigger EventName="MouseMove">
<behavior:CallMethodAction MethodName="OnMouseMove" TargetObject="{Binding}"/>
</behavior:EventTrigger>
</behavior:Interaction.Triggers>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Margin="20,0,10,0" x:Name="LogoContainer">
<behavior:Interaction.Triggers>
<behavior:EventTrigger EventName="MouseDown">
<behavior:CallMethodAction MethodName="OnMouseDown" TargetObject="{Binding}"/>
</behavior:EventTrigger>
</behavior:Interaction.Triggers>
<Image Source="{DynamicResource Logo}" Height="20"/>
</Grid>
</Grid>
</Window>
/// <summary>
/// λ§μ°μ€λ₯Ό ν΄λ¦νλ©΄ λ§μ°μ€ ν¬μΈν°λ₯Ό GrabbingμΌλ‘ λ°κΎΈκ³ λλκ·Ένλ€.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void OnMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton != MouseButtonState.Pressed) return;
if (sender is not Grid logoContainer) return;
if (isMouseEnter)
{
// λ§μ°μ€ 컀μλ₯Ό GrabbingμΌλ‘ λ°κΎΈκΈ°
}
if (view is null) // viewλ Window κ°μ²΄
{
// view = μ°Ύμ μλμ° κ°μ²΄
}
view?.DragMove();
}
// λμμ΄ λμ§ μλ μ΄λ²€νΈ ν¨μ
public void OnMouseMove(object sender, MouseEventArgs e)
{
if (sender is not Window window) return;
if (!isMouseEnter) return;
if (e.LeftButton != MouseButtonState.Pressed) return;
System.Diagnostics.Debug.WriteLine($"" +
$"ML: {SystemParameters.WorkArea.Left}, WL: {window.Left}");
}
μΆμΈ‘μ΄ λλ 건, view?.DragMove()κ° μ€νμ΄ λλ©΄ λλκ·Έκ° λ λλμ μ½λκ° λ€μμΌλ‘ λμ΄κ°μ§ μμμ OnMouseMove()κ° μ€νμ΄ λμ§ μλ κ² κ°λ€κ³ μκ°λ©λλ€.
κΈ°λνλ λμ
λ§μ°μ€ λ²νΌμ΄ λλ¦° μνλ‘ λλκ·Ένλ μ€μ mousemove μ΄λ²€νΈλ₯Ό λμμν€κ³ μΆμ΅λλ€.
μ 체 μ½λλ μλμ λ§ν¬μ μμ΅λλ€. κΈ΄ κΈ μ½μ΄μ£Όμ
μ κ°μ¬ν©λλ€.
μ 체 μ½λ