如何在中心制作MessageDialog Box

时间:2013-07-28 06:41:26

标签: c# windows-8 windows-store-apps winrt-xaml

嗨这是MessageDialog Box。

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

我有这些问题:

  1. 如何使它成为我想要的尺寸。示例:出现在方框大小的中心?
  2. 如何为此MessageBox添加标题示例:电影
  3. 如何使其回答是,否或取消
  4. 可以添加背景颜色吗?
  5. 由于

3 个答案:

答案 0 :(得分:3)

以下是你的答案:

Num 1.你不能将MessageDialog设置为你想要的任何大小,它自身的大小。

Num 2. MessageDialog的标题可以像这样处理:

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

Num 3.更改messageDialog的按钮是这样的:

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();

Num 4.您无法更改MessageDialog背景,它会自行着色。

顺便说一句,Callisto中有一个完全可自定义的对话框可能很有用,但是更多的工作(也许你按小时支付:)):https://github.com/timheuer/callisto

答案 1 :(得分:2)

您可以使用PopupMessageDialog无效。您需要首先将弹出窗口的UI创建为Usercontrol,然后将弹出窗口的子项设置为该用户控件。我已经给出了下面的示例。还有一个选项是使用InputDialog中提供的<UserContol />

MyUserControl.xaml(将适当的高度宽度设置为<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>

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;
}

MainPage.xaml.cs中

{{1}}

答案 2 :(得分:1)

如果这确实是应用程序的“模态”输入/消息,请不要尝试更改UX设计。 WinRT应用程序中的对话应该与MessageDialog类似。如果您从系统范围转移 - 您正在更改整个系统中一致的模式,除了您的应用程序。

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