首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试信息中缺少源信息。

调试信息中缺少源信息。
EN

Stack Overflow用户
提问于 2014-04-20 08:15:43
回答 1查看 683关注 0票数 1

我想要做的是将事件处理程序添加到canvasBackground中的控件中,这样我就可以使用鼠标拖动将其所有子元素移动到不同的窗口位置。但是,当它开始遍历foreach循环中的每个控件时,它会抛出一个异常:

XamlParseException发生类型的"AgentWindow.xaml“类型的构造函数的调用与指定的绑定约束匹配会引发异常。行号'3‘和行位置'9’。 此模块的调试信息中缺少源信息。

AgentWindow.xaml.cs

代码语言:javascript
复制
public AgentWindow()
{
     InitializeComponent();

     foreach (Control control in canvasBackground.Children)
     {
         control.PreviewMouseLeftButtonDown += this.MouseLeftButtonDown;
         control.PreviewMouseMove += this.MouseMove;
         control.PreviewMouseLeftButtonUp += this.PreviewMouseLeftButtonUp;
     }
 }

AgentWindow.xaml

代码语言:javascript
复制
<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内部的按钮.我是新来的,所以请温柔点。:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-20 08:54:31

Canvas不是Control.孩子也是UIElementCollection,所以你应该在UIElement上循环,而不是控制。

代码语言:javascript
复制
foreach (UIElement control in canvasBackground.Children)
{
   ....
}

在侧面注意,这个循环将把鼠标事件挂在子画布和按钮上,而不是在内部按钮上。如果你想做内部按钮,你必须循环内部画布的子以及。

无论如何,您只能使用XAML来挂钩事件。挂钩父元素本身。

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23179948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档