2010-04-07 37 views
1

我使用WPF Futures的主題DarkExpression。 它似乎不適用於數據類型。使用主題時的數據類型不起作用 - WPF

方案1:

這裏是如何看起來像沒有的DataTemplates:

enter image description here

代碼:

<ListView Name="playlistListView" ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Name}"> 
        <GridViewColumnHeader HorizontalContentAlignment="Left" Content="Playlist" Tag="Playlist"/> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
</ListView> 

方案2: 這是怎麼了看起來像試圖給你

enter image description here

代碼:

 <ListView Name="playlistListView" ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <UserControls:SongDataTemplate Margin="4" /> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
</ListView> 

方案3:

這裏是如何看起來就像試圖同時覆蓋的主題中使用的DataTemplates:

本身在使用主題的DataTemplates

enter image description here

代碼:

<UserControl.Resources> 
    <Style x:Key="ListViewItemStretch" TargetType="{x:Type ListViewItem}"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     <Setter Property="Background" Value="Transparent" /> 
    </Style> 
</UserControl.Resources> 

<Grid x:Name="LayoutRoot"> 
    <ListView Name="playlistListView" ItemContainerStyle="{StaticResource ListViewItemStretch}" ItemsSource="{Binding PlaylistList}" Margin="0" SelectionChanged="DatabindedPlaylistListView_SelectionChanged" Background="{x:Null}" Opacity="0.98"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Grid> 
        <UserControls:SongDataTemplate Margin="4" /> 
       </Grid> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
</ListView> 

我想保持主題風格,但我也想用的DataTemplates定義播放列表應該是什麼樣子等。有什麼建議麼?

注:在方案2和3,我不得不刪除

<ListView.View> 
     <GridView> 
      <GridViewColumn Width="Auto" DisplayMemberBinding="{Binding Name}"> 
       <GridViewColumnHeader HorizontalContentAlignment="Left" Content="Playlist" Tag="Playlist"/> 
      </GridViewColumn> 
     </GridView> 
</ListView.View> 

將使用的DataTemplate之前。

編輯:

下面給出的解決方案,如果工作類型更改爲ListBox和我使用的是文本框代替。我不能讓它與ListView一起工作。

回答

1

你做錯了

+0

謝謝!太麻煩了。只要使用ListBox實現我自己的ListView。 – 2010-04-12 12:17:44

0

不,如果你替換

<Grid> 
    <UserControls:SongDataTemplate Margin="4" /> 
</Grid> 

一個文本框,例如它的工作?

的問題可能是由用戶控制生成..通過使用支持算法FMP

<Style BasedOn={StaticResource {x:Type ListViewItem}} x:Key="ListViewItemStretch" TargetType="{x:Type ListViewItem}"> 
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
    <Setter Property="Background" Value="Transparent" /> 
</Style> 
+0

沒有。一樣的。如果我標記了一些東西,它會使用默認的藍色。不知何故,我只是不認爲WPF主題支持數據模板。 – 2010-04-07 16:27:25

1

嘗試。 當你想定製ListView時,你需要使用ViewBase類型的View屬性。從ViewBase派生一個自定義視圖,將其分配給ListView.View,就完成了。 有一個例子ViewBase Class Documentation

+0

看起來有趣!我嘗試過,但我得到了一個例外:請參閱圖片http://i43.tinypic.com/kd5nbt.jpg – 2010-04-07 16:41:54