user4931847
user4931847

Reputation:

ContentDialog Width Fitting on Windows 10 Mobile (UWP)

I created a content dialog for UWP on Windows 10 mobile. Fit runs perfectly on 320 x 480 resolution 4" simulator. However, when I choose the 5" 720p simulator, gaps are seen left and right side. I cannot find the exact solution. Anyone encountered with this problem? Thanks.

ContentDialog's XAML is here:

<ContentDialog x:Name="ContDial"
        x:Class="TripLog.UserControls.AddStory"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:TripLog.UserControls"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="Share Story"
        PrimaryButtonText="Share"
        SecondaryButtonText="Cancel"
        PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
        SecondaryButtonClick="ContentDialog_SecondaryButtonClick" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Loading="ContentDialog_Loading" Loaded="ContentDialog_Loaded" Closed="ContentDialog_Closed" Closing="ContentDialog_Closing" RequestedTheme="Light" FontSize="16" MaxWidth="{Binding ActualWidth, ElementName=pageRoot}" MinWidth="500" FullSizeDesired="True">

        <Grid x:Name="Main" ScrollViewer.VerticalScrollBarVisibility="Auto">
            <Grid.RowDefinitions>
                <RowDefinition Height="58"/>
                <RowDefinition Height="58"/>
                <RowDefinition/>
                <RowDefinition Height="76"/>
            </Grid.RowDefinitions>
            <TextBox x:Name="Title_TextBox" Text="" Margin="10,10,10,0" PlaceholderText="Please enter your story title..." RequestedTheme="Light" FontSize="16" MaxLength="50" Grid.Row="1" BorderBrush="{StaticResource TextColor}"/>
            <TextBox x:Name="Experience_Text" Text="" Grid.Row="2" Margin="10,10,10,0"  PlaceholderText="Please tell your experience..." MaxLength="500" TextChanged="Experience_Text_TextChanged" FontSize="16" TextWrapping="Wrap" MinHeight="42" AcceptsReturn="True" RequestedTheme="Light" ScrollViewer.VerticalScrollBarVisibility="Auto" VerticalAlignment="Center" Height="190" BorderBrush="{StaticResource TextColor}"/>
            <Grid x:Name="CharacterGrid" Grid.Row="3" Margin="10,0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="48"/>
                    <ColumnDefinition Width="64"/>
                    <ColumnDefinition/>
                </Grid.ColumnDefinitions>
                <TextBlock x:Name="CharacterLeft" Margin="0" TextWrapping="Wrap" Text="" TextAlignment="Right" FontSize="16" Grid.Column="2" VerticalAlignment="Top" RequestedTheme="Light" Foreground="{StaticResource TextColor}"/>
                <Button x:Name="CameraButton" FontFamily="Segoe MDL2 Assets" Content="&#xE722;" Background="Transparent" VerticalAlignment="Top" Margin="0,5,0,0" HorizontalAlignment="Left" Foreground="{StaticResource TextColor}" FontSize="21.333" RequestedTheme="Light" Width="48" Height="48"/>
            </Grid>
            <Grid x:Name="LocationGrid" Margin="10,10,10,0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition Width="48"/>
                </Grid.ColumnDefinitions>
                <TextBlock x:Name="LocText" Margin="0" TextWrapping="Wrap" Text="Location will be here...." FontSize="16" VerticalAlignment="Center" RequestedTheme="Light" Foreground="{StaticResource TextColor}" TextAlignment="Center"/>
                <Button x:Name="LocationButton" FontFamily="Segoe MDL2 Assets" Content="&#xE81D;" Background="Transparent" VerticalAlignment="Center" Margin="0" HorizontalAlignment="Right" Foreground="{StaticResource TextColor}" FontSize="21.333" RequestedTheme="Light" Width="48" Height="48" Grid.Column="1"/>
            </Grid>
        </Grid>
    </ContentDialog>

This is the image:

Img

Upvotes: 3

Views: 4636

Answers (1)

Alan Yao - MSFT
Alan Yao - MSFT

Reputation: 3304

Set the MinWidth and MaxWidth to page's ActualWidth in code behind to make sure it fits the screen.

For example, if you show the dialog inside a button click on a page. The following code should work:

private async void Button_Click(object sender, RoutedEventArgs e)
{
    CustomContentDialog contentDialog = new CustomContentDialog();
    contentDialog.MinWidth = this.ActualWidth;
    contentDialog.MaxWidth = this.ActualWidth;
    ContentDialogResult result = await contentDialog.ShowAsync();
}

Upvotes: 5

Related Questions