拖放UWP与按钮样式

时间:2016-03-04 11:26:45

标签: xaml drag-and-drop windows-10 win-universal-app windows-10-mobile

我有一个问题是让我不高兴。我想在列表视图中拖放一个项目,当我将一个样式应用于我的项目时,我无法做到。当我没有应用样式(MyButtonStyle)或者没有样式的图像时,我才能做到并且工作正常。当我有样式(MyButtonStyle)时,不会调用ItemDragStarting事件。

另一种情况:我已经点击相关事件,当我应用此样式崩溃时。我不明白问题是什么,有人能帮助我吗?

谢谢你:

代码MainPage:

<ListView x:Name="MyListView" ItemsSource="{x:Bind _ObservableCollection}" Style="{StaticResource MyListViewStyle}" SelectionMode="None" CanDragItems="True" DragItemsStarting="MyListView_OnDragItemsStarting">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <Button Tapped="Item_Tapped" Style="{StaticResource MyButtonStyle}" />
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>

XAML样式代码:

 <Style x:Key="MyButtonStyle" TargetType="Button">
  <Setter Property="Background" Value="{StaticResource MyColor1}"/>
    <Setter Property="Template">
          <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border x:Name="ButtonContent" Background="{TemplateBinding Background}">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="CommonStates">
                            <VisualState x:Name="Normal"/>
                            <VisualState x:Name="PointerOver">
                                <Storyboard>
                                    <ColorAnimation Storyboard.TargetName="ButtonContent" To="{StaticResource MyColor2}" 
                                        Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" 
                                        Duration="00:00:00.1"/>
                                </Storyboard>
                            </VisualState>
                            <VisualState x:Name="Pressed">
                                <Storyboard>
                                    <PointerDownThemeAnimation TargetName="ButtonContent"/>
                                    <ColorAnimation Storyboard.TargetName="ButtonContent" To="{StaticResource MyColor3}" 
                                        Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" 
                                        Duration="00:00:00.1"/>
                                </Storyboard>
                            </VisualState>
                        </VisualStateGroup>
                    </VisualStateManager.VisualStateGroups>
                    <Image Width="200" Height="200">
                        <Image.Source>
                            <BitmapImage UriSource="{Binding MyImage, Mode=OneTime}" />
                        </Image.Source>
                    </Image>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 个答案:

答案 0 :(得分:1)

最适合您的解决方案是根本不使用Button。改为使用IsItemClickEnabled上的ItemClick属性和ListView事件,然后将您的图片放入ItemContainerStyle。它将解决您的拖放问题,集中问题并带来更好的性能。