Однако оба окна точно такой же размер.
Да, я только что нашел ту же проблему, и я сообщил об этой проблеме. Как только я получу ответ на этот вопрос, я отправлю его здесь.
К настоящему моменту мы можем использовать обходной путь для решения этой проблемы, так как вы хотите развернуть новое окно с меньшим размером, чем главное окно, вы можете использовать ApplicationView.TryResizeView | tryResizeView method, чтобы программно установить размер нового окна.
Например:
private async void Test_Click(object sender, RoutedEventArgs e)
{
var currentAV = ApplicationView.GetForCurrentView();
//get the bounds of current window.
var rect = Window.Current.Bounds;
var newAV = CoreApplication.CreateNewView();
await newAV.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal,
async() =>
{
var newWindow = Window.Current;
var newAppView = ApplicationView.GetForCurrentView();
newAppView.Title = "New window";
var frame = new Frame();
//send current window's size as parameter.
frame.Navigate(typeof(MainPage), rect.Width.ToString() + ":" + rect.Height.ToString());
newWindow.Content = frame;
newWindow.Activate();
await ApplicationViewSwitcher.TryShowAsStandaloneAsync(
newAppView.Id,
ViewSizePreference.UseHalf,
currentAV.Id,
ViewSizePreference.UseHalf);
});
}
Тогда в OnNavigatedTo
метод и Loaded event
:
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
if (size != null)
{
var newwidth = Convert.ToInt32(size[0]) - 300;
var newheight = Convert.ToInt32(size[1]) - 200;
ApplicationView.GetForCurrentView().TryResizeView(new Size { Width = newwidth, Height = newwidth });
}
}
private string[] size;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.Parameter.ToString() != "")
{
size = e.Parameter.ToString().Split(':');
}
}
Или, если вы не возражаете, чтобы увидеть процесс изменения размеров нового окна, вы можете также попробовать этот код, и нет необходимости отправлять размер в качестве параметра в новое окно в этом методе:
var frame = new Frame();
frame.Navigate(typeof(MainPage), null);
newWindow.Content = frame;
newWindow.Activate();
await ApplicationViewSwitcher.TryShowAsStandaloneAsync(
newAppView.Id,
ViewSizePreference.UseHalf,
currentAV.Id,
ViewSizePreference.UseHalf);
newAppView.TryResizeView(new Size { Width = rect.Width - 300, Height = rect.Height - 200 });
Почему вы не используете '' control? [Класс Pupup] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.primitives.popup.aspx) –
Хассаан: Я сейчас пытаюсь всплывать, но у меня нет но он мог скользить по экрану. Это одно из моих требований. – Rick