<ContentControl VerticalAlignment="Bottom" HorizontalAlignment="Right" >
<i:Interaction.Behaviors>
<s:MouseDragElementBehaviors/>
</i:Interaction.Behaviors>
<InkCanvas Margin="188,5,104,0"
DefaultDrawingAttributes="{StaticResource mydab}"
Background="White" Name="inkCanvas"
Focusable="False">
</InkCanvas>
</ContentControl>
需求:ContentControl 可以拖拽移动,InkCanvas可以再面板上写字。
问题:ContentControl 拖拽移动, 导致InkCanvas不能在面板上写字,怎么使InkCanvas写字时候这个ContentControl 不移动呢?
请问是要禁止什么事件?还是重写MouseDragElementBehaviors ,但是怎么重写呢??
本来你这个需求就有问题。。。InkCanvas与ContentControl之间得有一点间距才可以拖动啊。。。你可以参考下面的代码:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" x:Class="WpfApplication2.MainWindow"
Title="MainWindow"
Width="600"
Height="800">
<Canvas>
<Border Background="Blue">
<i:Interaction.Behaviors>
<ei:MouseDragElementBehavior/>
</i:Interaction.Behaviors>
<ContentControl Width="500" Height="500">
<InkCanvas Margin="10,37,10,10" Background="Yellow" />
</ContentControl>
</Border>
</Canvas>
</Window>
真切感谢 Leaco ,理解你的意思,我那代码是我随手敲的,没有验证过。我遇到的问题是,一个Windows下有个ContentControl是可以拖动的,ContentControl里面包含一个InkCanvas ,当我在InkCanvas 上面写字的时候,外面的ContentControl也会移动们导致我在InkCanvas里面写不了字……
起初我没有想到路由事件导致的,看你的代码测试一下,
想到了路由事件,我把inkCanvas_PreviewMouseDown事件里面的 e.handle=true;就好了。呵呵。