我正在使用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的内容,而不是新创建的实例