我已经创建了一个ContentDialog来应用样式(不能通过消息对话框和PopUp来应用),但是我对它有问题,它不能移动,或者我不能关闭它,就像我在Groove App中单击按钮“Connexion”时出现的框架一样

你有什么想法吗,我可以在the ContentDialog style中修改哪个部分来移动这个ContentDialog并关闭它,就像上面的图像一样
我在做一个通用的应用程序
发布于 2016-03-11 15:48:43
请你有任何想法,我可以修改在ContentDialog风格的部分,以使此ContentDialog可移动,并关闭它像上面的图像。
恐怕对话框是不可移动的,并且您在Groove应用程序或系统的邮件应用程序中显示的图像也不是ContentDialog,实际上,这个“对话框”是由UserDataAccountManager.ShowAddAccountAsync调用的。如果我们使用ProcessMonitor跟踪此UI,我们会发现这是一个系统应用程序C:\Windows\SystemApps\Microsoft.AccountsControl_cw5n1h2txyewy.你可以在SO:UWP Modal Window上看到类似问题中的图片和信息。
对于您的问题,我们无法启动结果的系统应用,我们只能使用UserDataAccountManager.ShowAddAccountAsync接口调用它。但你可以创建一个UWP应用程序,并启动此应用程序以获取来自另一个应用程序的结果,要执行此操作,请参阅Launch an app for results。
或者,如果你只是想要一个可移动的UI,你可以在你的应用程序中创建一个新窗口,并更改这个新窗口的大小,使其像ContentDialog一样弹出,但这个新窗口将显示您的应用程序的标题,该标题无法删除。
如何创建新窗口?例如:
private async void OnClick(object sender, RoutedEventArgs e)
{
var newCoreAppView = CoreApplication.CreateNewView();
var appView = ApplicationView.GetForCurrentView();
await newCoreAppView.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Low, async () =>
{
var window = Window.Current;
var newAppView = ApplicationView.GetForCurrentView();
var frame = new Frame();
window.Content = frame;
frame.Navigate(typeof(BlankPage));
window.Activate();
await ApplicationViewSwitcher.TryShowAsStandaloneAsync(newAppView.Id, ViewSizePreference.Default, appView.Id, ViewSizePreference.Default);
});
}以及如何更改新窗口的大小?例如,在新窗口中显示的页面的cs文件中:
public BlankPage()
{
this.InitializeComponent();
this.Loaded += Page_Loaded;
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
var s = ApplicationView.GetForCurrentView();
s.TryResizeView(new Size { Width = 600, Height = 320 });
}这将使窗口宽度为600,高度为320。
发布于 2016-03-11 08:37:15
我认为你可以用另一种方式来做:
发布于 2020-07-08 21:31:18
这就是我是如何做到的,因为我从4年到现在都没有找到任何答案:)
var dialog = new ContentDialog()
{
Title = "This is a Title!",
ManipulationMode = ManipulationModes.All,
};
dialog.ManipulationDelta += delegate (object sender, ManipulationDeltaRoutedEventArgs e)
{
if(!e.IsInertial)
dialog.Margin = new Thickness(
dialog.Margin.Left + e.Delta.Translation.X,
dialog.Margin.Top + e.Delta.Translation.Y,
dialog.Margin.Left - e.Delta.Translation.X,
dialog.Margin.Top - e.Delta.Translation.Y
);
};https://stackoverflow.com/questions/35929032
复制相似问题