Microsoft Surface - Flip & Scatter Посмотреть элементы - PullRequest
1 голос
/ 02 апреля 2010

В настоящее время я пытаюсь переключиться на работу с элементами Scatterview, и у меня возникают некоторые концептуальные проблемы с этим, используя плагин под названием Thriple (http://thriple.codeplex.com/).

По сути, двухсторонний тройной элемент управления выглядит следующим образом:

<thriple:ContentControl3D
  xmlns:thriple="http://thriple.codeplex.com/"
  Background="LightBlue"
  BorderBrush="Black"
  BorderThickness="2"
  MaxWidth="200" MaxHeight="200"
 >
<thriple:ContentControl3D.Content>
<Button 
  Content="Front Side"
  Command="thriple:ContentControl3D.RotateCommand"
  Width="100" Height="100"
  />
</thriple:ContentControl3D.Content>
<thriple:ContentControl3D.BackContent>
<Button 
  Content="Back Side"
  Command="thriple:ContentControl3D.RotateCommand"
  Width="100" Height="100"
  />
</thriple:ContentControl3D.BackContent>
</thriple:ContentControl3D>

Что я пытаюсь понять, так это то, что мне нужно создать 2 отдельных шаблона ScatterView для привязки к нужным данным, а затем каждый из них будет «передним» и «задним» элементом scatterview ИЛИ если мне нужно 2 отдельных элемента ScatterView, которые привязаны к нужным данным, которые затем привязываются к «задней» и «передней» части основного элемента ScatterView?

Если есть лучший способ использования анимации с переворотом в ScatterViewItem, это тоже было бы круто!

Спасибо!

1 Ответ

0 голосов
/ 04 мая 2010

Я бы создал два отдельных шаблона для данных. Для пользователя это все тот же элемент scatterview (с двух сторон), поэтому иметь их как два отдельных элемента не имеет смысла. Вы можете указать, какие шаблоны использовать для front vs back в свойствах класса ContentControl3D. (Они имеют тип DataTemplate)

По кодам это выглядело бы примерно так:

<thriple:ContentControl3D
  xmlns:thriple="http://thriple.codeplex.com/"
  Background="LightBlue"
  BorderBrush="Black"
  BorderThickness="2"
  MaxWidth="200" MaxHeight="200"
  Content="{Binding MyData}"
  BackContent="{Binding MyData}"
  ContentTemplate="{StaticResource MyFrontTemplate}"
  BackContentTemplate="{StaticResource MyBackTemplate}"   
 />

Вы также можете просто указать содержимое непосредственно в объявлении элемента управления (как у вас есть кнопки выше), если это имеет больше смысла для вас. Это избавляет вас от необходимости создавать шаблоны данных для контента:

<thriple:ContentControl3D
  xmlns:thriple="http://thriple.codeplex.com/"
  Background="LightBlue"
  BorderBrush="Black"
  BorderThickness="2"
  MaxWidth="200" MaxHeight="200"
 >

<thriple:ContentControl3D.Content>
  <Grid>
    <TextBlock Text="I'm the front" />
    <TextBlock Text="{Binding SomeDataProperty}" />
    <Button 
        Content="Flip"
        Command="thriple:ContentControl3D.RotateCommand"
        Width="100" Height="100"
        />
  </Grid>
<thriple:ContentControl3D.BackContent>
  <Grid>
    <TextBlock Text="I'm the back" />
    <TextBlock Text="{Binding SomeOtherDataProperty}" />
    <Button 
        Content="Flip"
        Command="thriple:ContentControl3D.RotateCommand"
        Width="100" Height="100"
        />
  </Grid>
</thriple:ContentControl3D.BackContent>
</thriple:ContentControl3D>
...