2013-04-29 2 views
0

Для проекта мы пытаемся реализовать простой стек карт с использованием WPF и поверхностного SDK. До сих пор все идет хорошо. Мы используем LibraryStack для колоды карт и ScatterView для карт, которые были взяты из стека. Карты, а также стопка карточек реализованы как отдельные элементы управления пользователя, полученные от ScatterViewItem и LibraryStack. Функциональность Drag and Drop также работает.Изменение ориентации элемента, отображаемого в LibraryStack

Однако карты, отображаемые на LibraryStack, не выровнены, и каждая из них имеет другую ориентацию. Есть ли способ, которым это можно исправить, чтобы все карты были в одном направлении?

Вот XAML код CardDeck:

<s:LibraryStack x:Class="ActionCardAlt.Deck" 
      ... (Standard xmlns declarations) 
     xmlns:local="clr-namespace:ActionCardAlt" 
      mc:Ignorable="d" 
      ItemTemplate="{DynamicResource CardBackground}" 
       > 
    <s:LibraryStack.Resources> 
     <DataTemplate x:Key="CardBackground"> 
      <Image Source="Images/CardBacksideAlpha.png"> 
     </DataTemplate> 
    </s:LibraryStack.Resources> 
    <s:LibraryStack.Template> 
     <ControlTemplate TargetType="{x:Type s:LibraryStack}"> 
      <Grid> 
      <ItemsPresenter /> 
      </Grid> 
     </ControlTemplate> 
    </s:LibraryStack.Template> 
</s:LibraryStack> 

В CardDeck помещается с помощью этой команды:

Я бы предположить, что есть возможность в DataTemplate или изображение внутри DataTemplate для управления ориентацией. Однако установка матриц в Image.RenderTransforms без вращения или идентичная матрица не помогли.

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

Итак, есть ли какой-либо возможный способ сделать это либо в XAML, либо в коде или другом трюке?

Благодарим вас заблаговременно.

ответ

1

Я не думаю, что это возможно, даже пытаясь манипулировать преобразованиями, которые Microsoft использует для LibraryStackItems. Я сам пробовал, и ничего не работало. (Манипулирование RotateTransform, добавление другого RotateTransform для отрицания начального RotateTransform и т. Д.). Событие, если вы получите начальный макет с нулевым вращением, некоторая проработанная логика испортит ваши изменения. И это просто RotateTransform. Существует также TranslateTransform .. (и ScaleTransform и ScewTransform)

Я думаю, нам просто нужно принять, вот как работает управление и что его не уместно манипулировать поворотом.

Так вот мой совет, основанный на многих проектах с SurfaceSDK на самой и Поверхностное-Touch-Pack Microsoft Pixelsense:

Используйте один ScatterView для обоих ваших требований: Стек и карты удалены Пользователь. Стек легко кодируется с помощью ScatterView, а Rotation может быть задано с помощью свойства Orientation. И как хороший побочный эффект, очень легко справиться с транзитами между стеком и открытыми картами.

+0

Хорошо, большое спасибо. Я попробую ваш подход с помощью ScatterView. –