2009-09-21 77 views
0

在#WPF中有ItemTemplateSelectors。但是,您是否也可以根據綁定對象的數據類型選擇一個ItemContainerStyle?在WPF中,根據數據綁定內容選擇ItemContainerStyle

我是數據綁定散點圖。我想根據DataContext中的對象設置生成的ScatterViewItems的一些屬性。對於樣式,類似於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> 

巴特Roozendaal,Sevensteps

回答

1

如何使用ItemContainerStyleSelector(廢話!)......很抱歉,這是一個漫長的夜晚