Drag-and-Drop UWP и стиль кнопок

У меня есть вопрос, который мне оставить расстроенным. Я хочу перетащить элемент в список, и я не могу этого сделать, когда к моему элементу применен стиль. Только я могу это сделать и работает отлично, когда у меня нет стиля (MyButtonStyle) / или у меня нет этого изображения в стиле. Когда у меня есть стиль (MyButtonStyle), событие ItemDragStarting не вызывается.

Другая ситуация: я нажал связанное событие, и когда я применяю этот стиль, вылетает. Я не понимаю, в чем проблема, может кто-нибудь помочь мне?

Спасибо:

Главная страница кода:

<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>

person fipcurren88    schedule 04.03.2016    source источник


Ответы (1)


Лучшим решением для вас было бы вообще не использовать Button. Вместо этого используйте свойство IsItemClickEnabled и событие ItemClick для ListView, а затем поместите свое изображение в ItemContainerStyle. Это исправит ваши проблемы с перетаскиванием, сосредоточит внимание и приведет к повышению производительности.

person Filip Skakun    schedule 04.03.2016
comment
Привет @Filip Skakun, спасибо за ваш ответ. Очень сложно применить этот стиль в ItemContainerStyle или я не понимаю, что я делаю для работы. - person fipcurren88; 07.03.2016