我在这篇文章中遇到了类似的问题: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,但看起来我做错了。
答案 0 :(得分:2)
您的命名空间是“Canvas”的事实导致优先级 - 即“Canvas”。被视为尝试引用Canvas命名空间中的类型而不是System.Windows.Controls.Canvas class的成员。做类似以下的事情应该有效:
System.Windows.Controls.Canvas.SetZIndex(Circle_Blue, Circle_Blue_index);