Окно сообщения с изображением в WP7 - PullRequest
2 голосов
/ 17 октября 2011

Привет! В настоящее время я использую сетку с изображением и двумя кнопками для отображения настраиваемого окна сообщения в моем приложении WP7, видимость которого сначала свернута.Все работает нормально, но я должен отключить все элементы управления на странице, когда видимость видна.Так что это довольно затратно для включения / выключения большого количества контроля позади.

Есть ли лучшее решение для моего требования: (1) показать окно сообщения с изображением и двумя кнопками или текстовым полем и (2)Он должен появиться в середине страницы.

Заранее спасибо !!

Ответы [ 4 ]

3 голосов
/ 17 октября 2011

Вы можете использовать встроенный Всплывающий элемент управления с прикрепленным поведением, записанным Кент Бугаарт , поэтому он будет вести себя как WPF Popup control с PlacementTarget и Placement:

<Popup b:PopupPlacement.PlacementTarget="{Binding ElementName=someElement}">
    <b:Popup.PreferredOrientations>
        <b:PopupOrientationCollection>
            <b:PopupOrientation Placement="Top" HorizontalAlignment="Center"/>
            <b:PopupOrientation Placement="Bottom" HorizontalAlignment="Center"/>
            <b:PopupOrientation Placement="Right" VerticalAlignment="Center"/>
            <b:PopupOrientation Placement="Right" VerticalAlignment="TopCenter"/>
        </b:PopupOrientationCollection>
    </b:Popup.PreferredOrientations>

    <Grid>
       <Grid.RowDefinitions>
         <RowDefinition />
         <RowDefinition />
       </Grid.RowDefinitions>

       <TextBlock Grid.Row="0">My popup's contents</TextBlock>
       <Image Grid.Row="1" .... />
    </Grid>
</Popup>
0 голосов
/ 18 октября 2011

В этой ситуации я добавляю сетку или границу к странице с прозрачным фоном и IsHitTestVisible = True. Затем вы можете добавить свое изображение и т. Д. В родительский элемент управления (Сетка / Граница). Вы должны убедиться, что родительский элемент управления охватывает всю страницу, а затем просто центрировать диалог внутри этого элемента управления. При переключении видимости родительского элемента управления прозрачный фон будет перекрывать другие элементы управления на странице, эффективно отключая их.

Вот пример. UxMessageGrid - это родительский элемент управления, а Border - это фактический диалог. Затем вам просто нужно убедиться, что это последний элемент управления, добавленный к корневому элементу, и переключить uxMessageGrid.Visibility в вашем коде.

<Grid x:Name="uxLayoutRoot">

    <Other Controls />

    <Grid x:Name="uxMessageGrid"
          Visibility="Collapsed"
          Background="Transparent"
          IsHitTestVisible="True">
        <Border CornerRadius="0"
                BorderThickness="1"
                VerticalAlignment="Center"
                HorizontalAlignment="Center"
                BorderBrush="{StaticResource PhoneForegroundBrush}"
                Background="{StaticResource PhoneBackgroundBrush}">
            <TextBlock Margin="15"
                       Text="Message..."
                       TextWrapping="Wrap"/>
        </Border>
    </Grid>
</Grid>
0 голосов
/ 17 октября 2011

Попробуйте, может быть, это поможет вам

        StackPanel st = new StackPanel();
        StackPanel st1 = new StackPanel();

        Image image = new Image();
        image.Height = 300;
        image.Width = 300;
        image.Source = new BitmapImage(new Uri("/PhoneApp1;component/Koala.jpg", UriKind.Relative));//Build Action=Resource

        Button btnok = new Button();
        btnok.Content = "Ok";
        btnok.Click += new RoutedEventHandler(btnok_Click);
        Button btncancel = new Button();
        btncancel.Content = "Cancel";
        btncancel.Click += new RoutedEventHandler(btncancel_Click);

        st1.Orientation = System.Windows.Controls.Orientation.Horizontal;
        st1.Children.Add(btnok);
        st1.Children.Add(btncancel);

        st.Children.Add(image);
        st.Children.Add(st1);
        ContentPanel.Children.Add(st);
0 голосов
/ 17 октября 2011

Используйте функции настраиваемого диалогового окна инструментария Coding4Fun http://coding4fun.codeplex.com/

В инструментарии имеется много элементов управления, доступных помимо стандартного инструментария Silverlight, и они должны более чем соответствовать вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...