我想要做的是将事件处理程序添加到canvasBackground中的控件中,这样我就可以使用鼠标拖动将其所有子元素移动到不同的窗口位置。但是,当它开始遍历foreach循环中的每个控件时,它会抛出一个异常:
XamlParseException发生类型的"AgentWindow.xaml“类型的构造函数的调用与指定的绑定约束匹配会引发异常。行号'3‘和行位置'9’。 此模块的调试信息中缺少源信息。
AgentWindow.xaml.cs
public AgentWindow()
{
InitializeComponent();
foreach (Control control in canvasBackground.Children)
{
control.PreviewMouseLeftButtonDown += this.MouseLeftButtonDown;
control.PreviewMouseMove += this.MouseMove;
control.PreviewMouseLeftButtonUp += this.PreviewMouseLeftButtonUp;
}
}AgentWindow.xaml
<Canvas x:Name="canvasBackground">
<Canvas Background="Black" Canvas.Right="10" Canvas.Top="10" Height="200" Width="153">
<Button x:Name="btnF1" Content="f1" Height="56" Width="60" Margin="10,12,79,132" Background="#DDD"></Button>
<Button x:Name="btnF2" Content="f2" Height="56" Width="60" Margin="80,12,9,132" Background="#DDD"/>
<Button x:Name="btnF3" Content="f3" Height="56" Width="60" Margin="10,73,79,71" Background="#DDD"></Button>
<Button x:Name="btnF4" Content="f4" Height="56" Width="60" Margin="80,73,9,71" Background="#DDD"></Button>
<Button x:Name="btnF5" Content="f5" Height="56" Width="60" Margin="10,134,79,10" Background="#DDD"></Button>
<Button x:Name="btnF6" Content="f6" Height="56" Width="60" Margin="80,134,9,10" Background="#DDD"></Button>
</Canvas>
<Button x:Name="btnSomeButton" Content="someb" Height="56" Width="60"
Background="#FFFBFBFB" Canvas.Left="292" Canvas.Top="193"/>
</Canvas>所有这些都是从我将GroupBox更改为画布时开始的。我这么做是因为我不知道如何访问GroupBox内部的按钮.我是新来的,所以请温柔点。:)
发布于 2014-04-20 08:54:31
Canvas不是Control.孩子也是UIElementCollection,所以你应该在UIElement上循环,而不是控制。
foreach (UIElement control in canvasBackground.Children)
{
....
}在侧面注意,这个循环将把鼠标事件挂在子画布和按钮上,而不是在内部按钮上。如果你想做内部按钮,你必须循环内部画布的子以及。
无论如何,您只能使用XAML来挂钩事件。挂钩父元素本身。
<Canvas x:Name="canvasBackground"
PreviewMouseLeftButtonDown="MouseLeftButtonDown"
PreviewMouseMove="MouseMove"
PreviewMouseLeftButtonUp="PreviewMouseLeftButtonUp">
<Canvas>
<Button x:Name="btnF1"/>
<Button x:Name="btnF2"/>
<Button x:Name="btnF3"/>
<Button x:Name="btnF4"/>
<Button x:Name="btnF5"/>
<Button x:Name="btnF6"/>
</Canvas>
<Button x:Name="btnSomeButton" Content="someb" Height="56" Width="60"
Background="#FFFBFBFB" Canvas.Left="292" Canvas.Top="193"/>
</Canvas>https://stackoverflow.com/questions/23179948
复制相似问题