UWP: ширина диалогового окна остается неизменной - PullRequest
0 голосов
/ 30 августа 2018

Я попытался установить ширину, а также минимальную высоту и минимальную ширину, но диалог все равно не сменится на полный экран. пробовал тоже window.bounds, но диалог не расширяется за фиксированную ширину.

    public sealed partial class ContentDialog1 : ContentDialog
{
    public ContentDialog1()
    {
        this.InitializeComponent();
        this.MinWidth = Window.Current.Bounds.Width;
    }

    private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
    {
    }

    private void ContentDialog_SecondaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
    {
    }


}

}

<ContentDialog
x:Class="PowerUp.UWP.View.ContentDialog1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:PowerUp.UWP.View"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="TITLE"
PrimaryButtonText="Button1"
SecondaryButtonText="Button2"
PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
SecondaryButtonClick="ContentDialog_SecondaryButtonClick"
MinWidth ="2000">
<Grid x:Name="cd1" >
</Grid>

Это то, что я хочу

Так в моем приложении отображается диалоговое окно с контентом

1 Ответ

0 голосов
/ 31 августа 2018

это на самом деле очень просто, провел небольшое исследование и нашел самый простой ответ, вы можете продолжать делать то, что вы уже делали, и просто установить свойство FullSizeDesired вашего ContentDialog до true .

Popup

или вы можете попробовать это с помощью всплывающего окна.

var c = Window.Current.Bounds;
var okButton=new Button{Content="Ok"};
okButton.Click += okButtonClicked; // now where you have this okButtonClicked event you can execute any code you want including, closing the popup.
var g = new Grid
{
    Width = c.Width,
    Height = c.Height,
    Background = new SolidColorBrush(Color.FromArgb(0x20, 0, 0, 0)),
    Children =
    {

        new StackPanel
        {
            Width = 400,
            Height = 200,
            Background = new SolidColorBrush(Colors.White),
            Children=
            {
                new TextBlock{Text="Title"},
                new TextBlocl{Text="description"},
                okButton
            }
        }
    }
};
var p = new Popup
{
    HorizontalOffset = 0,
    VerticalOffset = 0,
    Width = c.Width,
    Height = c.Height,
    Child = g
};

p.IsOpen = true; // open when ready

обратите внимание, что Child of popup - это g , который является сеткой, вы можете поместить свой контент в эту сетку, или вы можете использовать StackPanel вместо этой сетки, а затем поместить свое содержимое в этой StackPanel все, что вы хотите здесь сделать, - это ваше решение, размещение элементов во всплывающем окне аналогично размещению элементов в ContentDialog.

достигнуть того же самого с помощью простой сетки вместе с рамкой

<Grid>
    <Grid Horizontallignment="Stretch" VerticalAlignment="Stretch" Visibility="Collapsed" x:Name="ContentGrid" canvas.ZIndex="5"><--this grid will act as content dialog , just toggle its visibility t the backend-->
        <--put all your content here along with ur ok and cancel buttons-->
    </Grid>
    <Frame/> <--this is the code where u hve ur frame-->
</Grid>

в вышеприведенном коде фрейм и ваша фактически сетка контента будут параллельны друг другу, и всякий раз, когда сетка контента видна только, она будет отображаться в приложении bcz, она имеет ZIndex больше 0 и ваш фрейм будет скрываться за ним, и всякий раз, когда его видимость будет свернута, она не будет отображаться, и вы сможете нормально видеть ваш кадр.

...