страница wpf недоступна для редактирования

#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" />
 

и это работает хорошо!

Спасибо!