Как изменить сообщение диалогового окна на основе окна? - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь найти способ отображения другого сообщения в моем диалоговом окне в зависимости от того, в каком окне находится пользователь.

Пример

Если пользователь находится вMainWindow.xaml и нажимает кнопку закрытия, сообщение в диалоговом окне должно сказать: «Вы уверены, что хотите закрыть MainWindow?»

Если пользователь находится на MainWindowTwo.xaml, то «Вы уверены, что хотите закрыть MainWindowTwo?»

Это мой текущий код, который появляется, когда пользователь нажимает кнопку закрытия.

XAML

<Border BorderBrush="#081e2b" BorderThickness="2">

    <Grid Background="#fff">

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="400"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="40" />
            <RowDefinition Height="110" />
            <RowDefinition Height="50" />
        </Grid.RowDefinitions>

        <Grid VerticalAlignment="Top"  Grid.ColumnSpan="1" Grid.Row="0">
            <DockPanel Width="400" Background="#081e2b">

            </DockPanel>
            <DockPanel HorizontalAlignment="Right" Background="#f12c00">
                <Button x:Name="CloseWindow" Content="X" Click="CloseWindow_Click" Height="40"></Button>
            </DockPanel>
        </Grid>
        <Grid Grid.Row="1">
            <WrapPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                <Label Content="Are you sure you wish to logout?" FontSize="16"></Label>
            </WrapPanel>
        </Grid>
        <Grid Grid.Row="2">
            <WrapPanel VerticalAlignment="Bottom" Background="#FFE6E6E6" >
                <Button Click="YesClose_Click" x:Name="YesClose" FontWeight="SemiBold" Content="Yes" Height="50" Background="#FFE6E6E6" Foreground="#081e2b" BorderBrush="#FFE6E6E6" Width="200"></Button>
                <Button Click="NoClose_Click" x:Name="NoClose" FontWeight="SemiBold" Content="No" Height="50" Background="#FFE6E6E6" Foreground="#081e2b" BorderBrush="#FFE6E6E6" Width="200"></Button>
            </WrapPanel>
        </Grid>

    </Grid>
</Border>

C #

private void YesClose_Click(object sender, RoutedEventArgs e)
    {
        var closeapp = Application.Current.Windows[0];
        closeapp.Close();

        Login.LoginScreen logscreen = new Login.LoginScreen();
        logscreen.Show();
        this.Close();
    }

    private void NoClose_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }

    private void CloseWindow_Click(object sender, RoutedEventArgs e)
    {
        this.Close();
    }

Очень признателен за любую помощь с этим, так как я довольно новичок в WPF, у меня естьиграю с этим уже несколько дней.

Спасибо

1 Ответ

0 голосов
/ 30 апреля 2019

Если я правильно понимаю вашу ситуацию, я бы создайте переменную с текстом и, например, привяжите ее к вашей метке:

<Label Content="{Binding QuestionText}" ...

Эту переменную я бы установил в конструкторе

LoginScreen(string message)
{
    this.QuestionText = message;
}

и зависит от MainWindow или MainWindowTwo, создающего LoginScreen с требуемым текстом.

С ним можно обращаться по-разному, может быть, я не подумал об оптимальном, но он должен работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...