#c# #wpf
#c# #wpf
Вопрос:
У меня возникла проблема при попытке создать страницу WPF. У меня есть окно с фреймом WPF, при загрузке окна я использую МэйнФрейм.Перейдите (новый объект страницы). Единственная проблема в том, что я не могу нажать какую-либо кнопку или использовать текстовое поле. Есть идеи, как я могу это решить?
вот код моего окна wpf:
<Window x:Class="ViewLayer.Forms.Win_LoginCloseable"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Win_LoginCloseable" Height="477" Width="501" WindowStyle="None" WindowStartupLocation="CenterScreen" ResizeMode="NoResize">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="180*" />
<RowDefinition Height="164*" />
<RowDefinition Height="35*" />
</Grid.RowDefinitions>
<Rectangle Grid.RowSpan="3" Name="Rect_Main" />
<TextBlock Grid.Row="2" FontFamily="Calibri" FontSize="17" FontStyle="Italic" Margin="10,0,12,7" Name="tb_remainding" Text="" TextAlignment="Justify" TextWrapping="WrapWithOverflow" Height="28" VerticalAlignment="Bottom" />
<Button Content="Cerrrar" Grid.Row="1" Height="73" HorizontalAlignment="Center" Name="btn_cancel" VerticalAlignment="Bottom" Width="173" Click="btn_cancel_Click" Background="#FFC70000" Margin="114,0,114,5" />
<Frame x:Name="MainFrame" IsHitTestVisible="False" NavigationUIVisibility="Automatic" />
<TextBlock FontFamily="Calibri" FontSize="22" FontWeight="Bold" Foreground="#FF797979" Height="95" Margin="0,0,0,0" Name="textBlock2" Text="Una vez identificado, luego de 90 segundos de inactividad el sistema cerrará su sesión automaticamente" TextAlignment="Center" TextTrimming="None" TextWrapping="Wrap" VerticalAlignment="Top" Grid.Row="1" HorizontalAlignment="Center" />
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="34,100,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
</Grid>
</Window>
конструктор окна
private Win_LoginCloseable()
{
InitializeComponent();
this.Pages = new List<Page>();
this.Pages.AddRange(new Page[]{
new MagneticCardPage(),
new UserInputPage()
});
}
здесь, когда я загружаю форму:
public void LoadForm(int Index = 0)
{
this.MainFrame.Navigate(this.Pages[Index]);
this.ShowDialog();
}
повторяю, на странице у меня есть текстовые поля и кнопки. Но когда я пытаюсь их использовать или нажимаю, я могу. События не попадают на страницы.
Заранее спасибо
Комментарии:
1. Можете ли вы показать свой код, в котором вы обрабатываете события?
Ответ №1:
Ваш код в конструкторе неверен. Она должна быть помечена как общедоступная, а не частная.
Конструктор всегда будет вызывать InitializeComponent , но он не может нормально функционировать, если ваш конструктор помечен как закрытый. Таким образом, элемент управления будет отображаться, НО дескриптор события выполняться не будет, поскольку код обработчика событий доступен внутри InitializeComponent, и я уверен, что он не будет выполнен.
Измените это:
private Win_LoginCloseable()
{
InitializeComponent();
this.Pages = new List<Page>();
this.Pages.AddRange(new Page[]{
new MagneticCardPage(),
new UserInputPage() });
}
В это:
public Win_LoginCloseable()
{
InitializeComponent();
this.Pages = new List<Page>();
this.Pages.AddRange(new Page[]{
new MagneticCardPage(),
new UserInputPage() });
}
Комментарии:
1. Привет! Спасибо! Конструктор является закрытым, потому что я пытаюсь сделать окно одноэлементным. Затем я меняю конструктор на общедоступный, но я работаю так же, как и раньше.
Ответ №2:
Что ж! Я выясняю решение проблемы.
здесь:
<Frame x:Name="MainFrame" IsHitTestVisible="False" NavigationUIVisibility="Automatic" />
я заменяю ее на:
<Frame x:Name="MainFrame" IsManipulationEnabled="True" />
и это работает хорошо!
Спасибо!