【问题标题】:How to change dialog box message based on window?如何根据窗口更改对话框消息?
【发布时间】:2019-09-19 02:27:04
【问题描述】:

我正在尝试找到一种方法,根据用户所在的窗口,在我的对话框中显示不同的消息。

示例

如果用户在 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 还很陌生,我已经玩了几天了。

谢谢

【问题讨论】:

    标签: c# wpf windows visual-studio xaml


    【解决方案1】:

    如果我正确理解您的情况,我会 使用文本创建变量,例如将其绑定到您的标签:

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

    这个变量我会在构造函数中设置

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

    并依赖于 MainWindow 或 MainWindowTwo 用所需的文本构造 LoginScreen。

    它可以用不同的方式处理,也许我没有想到最佳的,但它应该可以工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2014-09-06
      相关资源
      最近更新 更多