无法在静态成员上设置Z索引

时间:2013-05-29 16:58:31

标签: c# .net wpf xaml canvas

我在这篇文章中遇到了类似的问题:Member '<method>' cannot be accessed with an instance reference但答案并没有为我提供解决方案。

我有一个简单的内容,我希望使用静态方法SetZIndex来改变该值,以便每个圆圈在点击时都会显示在顶部。

xaml在这里......

<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'的定义,也没有扩展方法'SetZIndex'接受类型'System.Windows的第一个参数。可以找到Window'(您是否缺少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,但看起来我做错了。

1 个答案:

答案 0 :(得分:2)

您的命名空间是“Canvas”的事实导致优先级 - 即“Canvas”。被视为尝试引用Canvas命名空间中的类型而不是System.Windows.Controls.Canvas class的成员。做类似以下的事情应该有效:

System.Windows.Controls.Canvas.SetZIndex(Circle_Blue, Circle_Blue_index);