我有一个简单的UserControl,如下所示 - 我放在Canvas中。我使用Multi-touch移动它,我希望能够使用程序C#代码读取它的新X,Y位置。理想情况下,我希望将X和Y作为两个属性或作为点(X,Y)。
<UserControl x:Class="TouchControlLibrary.myControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="64" d:DesignWidth="104">
<Border Name="ControlBorder" BorderThickness="1" BorderBrush="Black">
<DockPanel Margin="1" Height="60 " Width="100">
<StackPanel DockPanel.Dock="Left" Background="Gray" Width="20" >
<Button Background="#FFDEDE53" Padding="0">In</Button>
</StackPanel>
<StackPanel DockPanel.Dock="Right" Background="Gray" Width="20" >
<Button Background="#FFE8B48F" Padding="0">Out</Button>
</StackPanel>
</DockPanel>
</Border>
</UserControl>
我希望为每个'X'和'Y'创建一个附加属性,并使用绑定或某种形式的附加属性或???从Canvas.Left和Canvas.Top填充它们。我花了很长时间寻找解决方案,但我发现的一切似乎都“不太需要”。
答案 0 :(得分:2)
您可以在userControl中使用这样的两个属性,
public double Top
{
get
{
if (double.IsNaN(Canvas.GetTop(this)))
{
return (double)0;
}
return Canvas.GetTop(this);
}
set
{
Canvas.SetTop(this, value);
}
}
检查“Notanumber”不是必需的,但我用它来防止错误。