无法在不同的页面中引用代码隐藏中的WPF控件

jchrr9hc  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(110)

我做了一个只有一个页面的项目,然后在我做了所有的事情之后,我决定回去做第二个页面,这是一个巨大的错误,因为现在我有50个编译器错误。在我的新页面的代码隐藏中,我不能通过名称访问任何控件,页面也不能访问代码隐藏中的任何事件处理程序。下面是一个例子:
Autoclicker.xaml

<Page x:Class="_1337clicker.Pages.Autoclicker"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:_1337clicker.Pages"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="Autoclicker">

    <Grid>
        <Button Name="hi"/>
    </Grid>
</Page>

Autoclicker.xaml.cs

using System.Windows;
using System.Windows.Controls;

namespace _1337clicker
{
    public partial class Autoclicker : Page
    {
        public Autoclicker()
        {
             hi.Content = "hello world"; //The name "hi" does not 
                                         //exist in the current context
        }
    }
}
nzk0hqpo

nzk0hqpo1#

我想你只是把类名/命名空间搞砸了。
签入XAML:

x:Class="_1337clicker.Pages.Autoclicker"

这将生成与命名空间_1337clicker.Pages中名为Autoclicker的类中的控件相关的所有变量
但是,您的代码隐藏类是:

namespace _1337clicker    // <---- DIFFERENT NAMESPACE
{
    public partial class Autoclicker : Page

您最终得到了两个“Autoclicker”类,一个从XAML生成,另一个由您编写。请更正命名空间和类名,使它们完全相同,然后重试。生成的代码最终将与代码隐藏在同一个类中,并且可能所有此类错误都将消失。
编辑:Joe也注意到了,它应该是x:Name。仅仅“Name”就可以让你用树遍历和/或按名称查找工具找到控件,但可能不会为代码隐藏生成变量。

相关问题