В WPF выбор ItemContainerStyle на основе содержимого, связанного с данными - PullRequest
0 голосов
/ 21 сентября 2009

В #WPF у вас есть ItemTemplateSelectors. Но можете ли вы также выбрать ItemContainerStyle на основе типа данных связанного объекта?

Я связываю данные по scatterview. Я хочу установить некоторые свойства сгенерированных ScatterViewItems на основе объекта в их DataContext. Механизм, подобный ItemTemplateSelector для стилей, был бы великолепен. Это вообще возможно? Теперь я привязываюсь к свойствам объектов, которые я показываю, чтобы получить эффект, но это похоже на накладные расходы и слишком сложный (и, самое главное, то, что наши дизайнеры XU не могут сделать сами).

Это тот XAML, который я сейчас использую. Ваша помощь очень ценится.

      <s:ScatterView x:Name="topicsViewer">
   <s:ScatterView.ItemTemplateSelector>
    <local:TopicViewerDataTemplateSelector>
     <DataTemplate DataType="{x:Type mvc:S7VideoTopic}">
      <Grid>
       <ContentPresenter Content="{Binding MediaElement}"  />
       <s:SurfaceButton Visibility="{Binding MailToVisible}" x:Name="mailto" Tag="{Binding Titel}" Click="mailto_Click" HorizontalAlignment="Right" VerticalAlignment="Top" Background="Transparent" Width="62" Height="36">
        <Image Source="/Resources/MailTo.png" />
       </s:SurfaceButton>
       <StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center" Height="32">
        <s:SurfaceButton Tag="{Binding MediaElement}" x:Name="btnPlay" Click="btnPlay_Click">
         <Image Source="/Resources/control_play.png" />
        </s:SurfaceButton>
        <s:SurfaceButton Tag="{Binding MediaElement}" x:Name="btnPause" Click="btnPause_Click">
         <Image Source="/Resources/control_pause.png" />
        </s:SurfaceButton>
        <s:SurfaceButton Tag="{Binding MediaElement}" x:Name="btnStop" Click="btnStop_Click">
         <Image Source="/Resources/control_stop.png" />
        </s:SurfaceButton>
       </StackPanel>
      </Grid>
     </DataTemplate>
     <DataTemplate DataType="{x:Type mvc:S7ImageTopic}">
      <Grid>
       <ContentPresenter Content="{Binding Resource}" />
       <s:SurfaceButton Visibility="{Binding MailToVisible}" x:Name="mailto" Tag="{Binding Titel}" Click="mailto_Click" HorizontalAlignment="Right" VerticalAlignment="Top" Background="Transparent" Width="62" Height="36">
        <Image Source="/Resources/MailTo.png" />
       </s:SurfaceButton>
      </Grid>
     </DataTemplate>
     <DataTemplate DataType="{x:Type local:Kassa}">
      <ContentPresenter Content="{Binding}" Width="300" Height="355" />
     </DataTemplate>
    </local:TopicViewerDataTemplateSelector>
   </s:ScatterView.ItemTemplateSelector>
   <s:ScatterView.ItemContainerStyle>
    <Style TargetType="s:ScatterViewItem">
     <Setter Property="MinWidth" Value="200" />
     <Setter Property="MinHeight" Value="150" />
     <Setter Property="MaxWidth" Value="800" />
     <Setter Property="MaxHeight" Value="700" />
     <Setter Property="Width" Value="{Binding DefaultWidth}" />
     <Setter Property="Height" Value="{Binding DefaultHeight}" />
     <Setter Property="s:ScatterViewItem.CanMove" Value="{Binding CanMove}" />
     <Setter Property="s:ScatterViewItem.CanScale" Value="{Binding CanScale}" />
     <Setter Property="s:ScatterViewItem.CanRotate" Value="{Binding CanRotate}" />
     <Setter Property="Background" Value="Transparent" />
    </Style>
   </s:ScatterView.ItemContainerStyle>
  </s:ScatterView>

Барт Роозендаал, Семь шагов

1 Ответ

1 голос
/ 21 сентября 2009

Как насчет использования ItemContainerStyleSelector (дух!) ... Извините, это была долгая ночь

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