在主窗口中为页面中的按钮添加的事件处理程序不起作用



我正在使用WPF我的非常简单的项目。我使用page类创建了登录页面,那里有两个控件。它们是按钮和文本框。然后我通过框架在主窗口中使用这个页面。在主窗口中,我试图将事件处理程序添加到"单击"事件上的按钮,不知何故它不起作用。没有错误消息或其他东西。我试图调试,但它只是没有进入方法。

页面代码:

<Page x:Class="BJack.LoginPage"
      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" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"
    Title="LoginPage">
    <Page.Resources>
        <Style TargetType="TextBox" x:Key="txtHint">
            <Style.Triggers>
                <Trigger Property="IsKeyboardFocused" Value="False">
                    <Setter Property="Text" Value="Login" />
                    <Setter Property="Foreground" Value="#FFB8A8A8" />
                </Trigger>
            </Style.Triggers>
            <Style.Setters>
                <Setter Property="Height" Value="25" />
                <Setter Property="FontSize" Value="16" />
                <Setter Property="Width" Value="300" />
            </Style.Setters>
        </Style>
    </Page.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <StackPanel VerticalAlignment="Center">
            <TextBox Name="txtLogin" Style="{StaticResource ResourceKey=txtHint}"></TextBox>
            <Button Grid.Row="1" Height="30" Width="150" Margin="0 30 0 0" Name="enterButton">Enter</Button>
        </StackPanel>
    </Grid>
</Page>

下面是MainWindow代码:

public partial class MainWindow : Window
{
    LoginPage lPage = new LoginPage();
    public MainWindow()
    {
        InitializeComponent();
        InitializeProgramm();
    }
    private void InitializeProgramm()
    {
        mainFrame.NavigationService.Navigate(new Uri("LoginPage.xaml", UriKind.Relative));
        lPage.enterButton.Click += enterButton_Click;
    }
    void enterButton_Click(object sender, RoutedEventArgs e)
    {
        if (lPage.txtLogin.Text.Length > 0)
        {
            mainFrame.Navigate(new Uri("GamePage.xaml", UriKind.Relative));
            this.WindowState = System.Windows.WindowState.Maximized;
        }
    }
    private void mainWin_MouseDown(object sender, MouseButtonEventArgs e)
    {
        Keyboard.ClearFocus();
    }
}

这是一个解决方案

private void InitializeProgramm()
{
    mainFrame.NavigationService.Navigate(lPage);
    lPage.enterButton.Click += enterButton_Click;
}

这将把实例lPage设置为您附加了事件处理程序的mainFrame的内容,而不是新创建的实例

相关内容

  • 没有找到相关文章

最新更新