0

我遇到了与这篇文章类似的问题:无法通过实例引用访问成员“<method>”,但答案没有为我提供解决方案。

我在 a 中有一个简单的,我想使用静态方法 SetZIndex 来更改该值,以便每个圆圈在单击时都会出现在顶部。

xml在这里...

<Window x:Class="Canvas.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">

<Canvas x:Name="Circles">
    <Ellipse x:Name="Circle_Blue" Fill="Blue" Canvas.Top="25" Canvas.Left="25" Height="100" Width="100" MouseDown="Circle_Blue_MouseDown"></Ellipse>
    <Ellipse x:Name="Circle_Red" Fill="Red" Height="100" Width="100" MouseDown="Circle_Red_MouseDown"></Ellipse>
    <Ellipse x:Name="Circle_Green" Fill="Green" Canvas.Left="50" Height="100" Width="100" MouseDown="Circle_Green_MouseDown"></Ellipse>
</Canvas>

这是生成以下错误的代码行:“System.Windows.Window”不包含“SetZIndex”的定义,并且没有接受“System.Windows.Window”类型的第一个参数的扩展方法“SetZIndex”可以被发现(您是否缺少 using 指令或程序集引用?)

    int Circle_Blue_index = 1;
    int Circle_Red_index = 2;
    int Circle_Green_index = 3;

    private void Circle_Green_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (Circle_Blue_index != 3)
            Circle_Blue_index = 3;

        if (Circle_Red_index != 1)
            Circle_Red_index = Circle_Red_index -=1;

        if (Circle_Green_index != 1)
            Circle_Green_index = Circle_Green_index -=1;

        Canvas.MainWindow.GetWindow(Circles).SetZIndex(Circle_Blue, Circle_Blue_index);   
    }

我曾尝试使用语法 ClassName.Control.Property 但看起来我做错了什么。

4

1 回答 1

2

您的命名空间是“Canvas”这一事实导致它优先 - 即“Canvas”。被视为试图引用 Canvas 命名空间中的类型,而不是System.Windows.Controls.Canvas 类的成员。执行以下操作应该有效:

System.Windows.Controls.Canvas.SetZIndex(Circle_Blue, Circle_Blue_index);
于 2013-05-29T17:09:14.943 回答