Pop Up: проблема с полем Top - PullRequest
0 голосов
/ 14 апреля 2011

Я занимаюсь разработкой приложения для Windows Phone.

Я использую пользовательский элемент управления, чтобы показать всплывающее окно:

<UserControl x:Class="XXXXXXX.Views.Lists.GameDescriptionControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}" Height="290" Width="460">

    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}" Margin="0,0,0,0" Width="460">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="133"/>
            <RowDefinition Height="86"/>
        </Grid.RowDefinitions>
        <TextBlock HorizontalAlignment="Center" Margin="10" Name="gameDescription" Text="" VerticalAlignment="Top" TextWrapping="Wrap" Grid.Row="1" Style="{StaticResource PhoneTextTitle3Style}" />
        <Button Content="{Binding Path=AppResources.Yes, Source={StaticResource LocalizedStrings}}" Height="72" HorizontalAlignment="Left" Margin="50,5,0,0" Name="okButton" VerticalAlignment="Top" Width="160" Click="okButton_Click" Grid.Row="2" />
        <Button Content="{Binding Path=AppResources.No, Source={StaticResource LocalizedStrings}}" Height="72" HorizontalAlignment="Left" Margin="244,5,0,0" Name="cancelButton" VerticalAlignment="Top" Width="160" Click="cancelButton_Click" Grid.Row="2" />
        <TextBlock Grid.Row="0" x:Name="caption" HorizontalAlignment="Left" Margin="10" TextWrapping="Wrap" Text="{Binding Path=AppResources.Description, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextLargeStyle}"/>
    </Grid>
</UserControl>

А это код для отображения всплывающего окна:

private void showInfo(int gameId)
{
    string gameDesc = getGameInfo(gameId);
    p = new Popup();
    GameDescriptionControl gd = new GameDescriptionControl();
    gd.Description = gameDesc;
    gd.OkClicked += new EventHandler(gd_OkClicked);
    gd.CancelClicked += new EventHandler(gd_CancelClicked);

    p.Child = gd;

    // Set where the popup will show up on the screen.
    p.VerticalOffset = 10;
    p.HorizontalOffset = 10;

    // Open the popup.
    p.IsOpen = true;
}

Но я получаю это:

Caption without margin top

Как видите, заголовок TextBlock не имеет верхнего поля.

Любой совет?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2011

Не для того, чтобы действовать как слово скрепка, но похоже, что вы пытаетесь создать собственный MessageBox.

Проверьте эту реализацию: http://cloudstore.blogspot.com/2011/01/customizing-messagebox-on-windows-phone.html.Это отличная реализация окна сообщений, которое очень просто в использовании, выглядит / ведет себя очень близко к реальному MessageBox и является легковесным.

Для добавления нескольких файлов, поставляемых с решением, все, что вам нужно сделать, это:

private MessageBoxService mbs = new MessageBoxService();

    ...

mbs.Closed +=new System.EventHandler(mbs_Closed);
mbs.Show("Confirm?","Are you sure you wish to do that?",MessageBoxServiceButton.YesNo,null);

void mbs_Closed(object sender, System.EventArgs e)
        {
            mbs.Closed -= mbs_Closed;

            if (mbs.Result == MessageBoxResult.Yes)
            {
...
            }
        }
0 голосов
/ 14 апреля 2011

Маржа относится к области за пределами вашего текстового блока.Если вы хотите отодвинуть текст от края текстового блока, вам нужно будет использовать атрибут Padding.

...