如何使MessageDialog Box位于中心

本文关键字:于中心 Box MessageDialog 何使 | 更新日期: 2023-09-27 18:25:16

嗨,这是消息对话框。

var messageDialog = new MessageDialog("Search has been found.");
// Show the message dialog
await messageDialog.ShowAsync();

我有以下问题:

  1. 如何把它做成我想要的尺寸。示例:是否以方形方框大小显示在中心
  2. 如何为此MessageBox添加标题示例:电影
  3. 如何获取答案是、否或取消
  4. 可以添加背景色吗

感谢

如何使MessageDialog Box位于中心

以下是您的答案:

数字1。您不能将MessageDialog设置为所需的任何大小,它会自行调整大小。

数字2。MessageDialog的标题可以这样处理:

new Windows.UI.Popups.MessageDialog("Content", "Title");

数字3。更改消息对话框的按钮如下:

var dialog = new Windows.UI.Popups.MessageDialog("Content", "Title");
dialog.Commands.Add(new UICommand("yes", (s) => { /* TODO: */}));
dialog.Commands.Add(new UICommand("no", (s) => { /* TODO: */}));
dialog.Commands.Add(new UICommand("cancel"));
await dialog.ShowAsync();

数字4。无法更改MessageDialog的背景,它会自行着色。

顺便说一句,木卫四中有一个完全可定制的对话框,可能很有用,但需要做更多的工作(也许你是按小时付费的:):https://github.com/timheuer/callisto

您可以使用PopupMessageDialog将不起作用。您需要首先将弹出窗口的UI创建为Usercontrol,然后将弹出窗口中的子控件设置为该用户控件。我给了下面的样品。还有一个选项是使用InputDialog,它在WinRT XAML Toolkit中可用。

MyUserControl.xaml(将适当的高度宽度设置为<UserContol />

<Grid Background="Black">
    <Grid.RowDefinitions>
        <RowDefinition Height="21*" />
        <RowDefinition Height="16*" />
        <RowDefinition Height="63*" />
    </Grid.RowDefinitions>
        <TextBlock Text="Movies" FontSize="30" Margin="20,20,0,0"/>
    <TextBlock Text="Search has been found." FontSize="15" Grid.Row="1" Margin="20,20,0,0"/>
    <StackPanel Orientation="Horizontal" Grid.Row="2" Margin="20,0,0,0">
        <Button Content="Yes" />
        <Button Content="No" />
        <Button Content="Cancel" />
    </StackPanel>
</Grid>

主页.xaml.cs

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Popup p = new Popup();
    p.Child = new MyUserControl();
    p.IsOpen = true;
    p.HorizontalOffset = (Window.Current.Bounds.Width - ((MyUserControl)(p.Child)).Width) / 2;
    p.VerticalOffset = (Window.Current.Bounds.Height - ((MyUserControl)(p.Child)).Height) / 2;
}

如果这真的是应用程序的"模态"输入/消息,不要试图改变用户体验设计。WinRT应用程序中的对话框应该类似于MessageDialog。如果你偏离了这一点——这是全系统的——你正在改变一个在整个系统中一致的模式,除了你的应用程序。

如果你想要的更多的是一个非模态对话框,听起来你可能想要。。。正如Jerry建议的那样,您可以使用基于Popup创建自己的工具包,或者使用像Callisto这样的第三方工具包,它为您提供了Flyout基础。