2010-03-28 13 views
10

Voglio utilizzare lo stesso stile in molte visualizzazioni di elenco. E nel mio stile ho definito anche le colonne di gridview.Utilizzo dello stesso stile in molte visualizzazioni elenco

ma quando provo a correre, viene generata un'eccezione:

View non può essere condiviso da più di un ListView.

Come posso risolvere questo?


XAML:

<Style x:Key="articleList" TargetType="{x:Type ListView}"> 
<Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True"/> 
<Setter Property="ScrollViewer.IsDeferredScrollingEnabled" Value="True"/> 
<Setter Property="ListView.ItemsSource" Value="{Binding}"/> 
<Setter Property="ListView.View"> 
    <Setter.Value> 
     <GridView> 
      <GridViewColumn Header="Subject" Width="300"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Subject}"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      <GridViewColumn Header="Size" Width="75"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding SizeFormatted}"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      <GridViewColumn Header="Poster" Width="175"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Poster}"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      <GridViewColumn Header="Age" Width="75"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding AgeFormatted}"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </Setter.Value> 
</Setter> 

+0

Potresti pubblicare una parte del tuo codice? –

+0

Puoi mostrarci il tuo stile per favore? –

+0

Ho aggiornato la domanda – ErikTJ

risposta

21

Aggiungere il x:Shared property alla risorsa GridView. Controlla la risorsa GridView in questo esempio.

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     x:Class="Window1" 
     x:Name="Window" 
     Title="Window1" 
     Width="640" Height="480"> 
    <Window.Resources> 
    <GridView x:Key="ViewBase1" x:Shared="False"> 
     <GridViewColumn Header="Blah1" Width="70"/> 
     <GridViewColumn Header="Blah2" Width="70"/> 
     <GridViewColumn Header="Blah3" Width="70"/> 
    </GridView> 
    </Window.Resources> 

    <Grid x:Name="LayoutRoot"> 
    <ListView Margin="0,0,0,120" View="{DynamicResource ViewBase1}" /> 
    <ListView Margin="272,0,91,120" View="{DynamicResource ViewBase1}" /> 
    </Grid> 
</Window> 
+4

+1 Salvato me digitando un sacco di codice! – JLWarlow

Problemi correlati