我正在使用WPF来完成我非常简单的项目。我使用Page类创建了登录页面,那里有两个控件。它们是Button和TextBox。然后我通过Frame在主窗口中使用此页面。在主窗口中,我试图在“Click”事件上向Button添加事件处理程序,但为什么它不起作用。没有错误消息或其他任何东西。我试图调试,但它没有进入方法。
这是页面代码:
<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();
}
}
答案 0 :(得分:0)
这是一个解决方案
private void InitializeProgramm()
{
mainFrame.NavigationService.Navigate(lPage);
lPage.enterButton.Click += enterButton_Click;
}
这会将实例lPage
设置为您已附加事件处理程序而不是新创建的实例的mainFrame的内容