Windows Phone 7, кнопка шаблона изображения источника привязки - PullRequest
0 голосов
/ 14 декабря 2010

У меня есть Pivot с ListBoxes в каждом PevotItem.Я сделал элемент управления Button для анимации элементов в ListBoxes.Есть дерево этих кнопок - каждая из них имеет различное изображение.Однако, возможно, есть какой-то способ сделать одну кнопку и просто привязать источник изображения.Я думаю, что это улучшит время загрузки страницы.

Буду благодарен за любой ответ.

Вот мой код:

    <DataTemplate x:Key="pageItemTemplate">
        <Button Content="{Binding name}" Margin="0,0,0,20" Style="{StaticResource PageListItemButton}"/>
    </DataTemplate>




<Style x:Key="PageListItemButton" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <StackPanel x:Name="stackPanel" Orientation="Horizontal">
                        <StackPanel.Projection>
                            <PlaneProjection CenterOfRotationY="0" CenterOfRotationX="1"/>
                        </StackPanel.Projection>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualStateGroup.Transitions>
                                    <VisualTransition GeneratedDuration="0:0:0.05">
                                        <VisualTransition.GeneratedEasingFunction>
                                            <CircleEase EasingMode="EaseInOut"/>
                                        </VisualTransition.GeneratedEasingFunction>
                                    </VisualTransition>
                                </VisualStateGroup.Transitions>
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="MouseOver"/>
                                <VisualState x:Name="Pressed">
                                    <Storyboard>
                                        <DoubleAnimation Duration="0" To="15" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationY)" Storyboard.TargetName="stackPanel" d:IsOptimized="True"/>
                                        <DoubleAnimation Duration="0" To="0.7" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="stackPanel" d:IsOptimized="True"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Disabled"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <Image Source="Images/MainPage/page.png" Height="40" Stretch="Fill" Width="40"/>
                        <ContentPresenter VerticalAlignment="Bottom"/>
                    </StackPanel>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Setter Property="FontFamily" Value="/BestNote;component/Fonts/Fonts.zip#Diavlo Bold"/>
        <Setter Property="FontWeight" Value="Bold"/>
        <Setter Property="FontSize" Value="24"/>
        <Setter Property="Foreground" Value="#FF292929"/>
    </Style>

Ответы [ 2 ]

0 голосов
/ 14 января 2011

Может быть, вам будет интересна следующая статья:

http://silvergeek.net/2011/01/14/imagebutton-control-for-win-phone-7/

0 голосов
/ 14 декабря 2010

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

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

Вы можете выполнить простое профилирование с помощью отладочного вывода и TimeSpans или попробовать что-то вроде профилировщика EQATEC.

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