2012-04-25 11 views
31

Sto utilizzando il controllo ListView anziché DataGrid nell'applicazione WPF. Voglio dare la larghezza * al mio ListView.GridViewColumn, ma ogni volta che fornisco la larghezza * a ListView.GridViewColumn, mi dà un errore di compilazione. Gentilmente suggeriscimi come posso fornire la larghezza * a ListView.GridViewColumn, in modo che lo ListView.GridViewColumn possa riempire automaticamente spazio extra quando massimizzo lo schermo.ListView.GridViewColumn (*) larghezza

Qualsiasi aiuto su questo sarà molto apprezzato. Grazie

risposta

57

Si prega di provare questa soluzione:

<ListView> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="column1" x:Name="col1"/> 
      <!--Column that shall resize: Width is set to the Actual Width of the helper field defined below--> 
      <GridViewColumn Header="column2" 
          Width="{Binding ElementName=helperField, Path=ActualWidth}"/> 
     </GridView> 
    </ListView.View> 
    Test Text 
</ListView> 

<!--This is the hidden helper Grid which does the resizing --> 
<Grid Visibility="Hidden"> 
    <Grid.ColumnDefinitions> 
     <!--Width is bound to width of the first GridViewColumn --> 
     <ColumnDefinition Width="{Binding ElementName=col1, Path=ActualWidth}"/> 
     <!--Width is set to "Fill"--> 
     <ColumnDefinition Width="*"/> 
     <!--Correction Width--> 
     <ColumnDefinition Width="10"/> 
    </Grid.ColumnDefinitions> 
    <!--This is the hidden helper Field which is used to bind to, using the "Fill" column of the helper grid--> 
    <Grid Grid.Column="1" x:Name="helperField"/> 
</Grid> 

Si potrebbe anche trovare qualche altra soluzione al seguente link:

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/3ee5696c-4f26-4e30-8891-0e2f95d69623/

+0

Grazie Bilal Hashmi. Ma nell'approccio xaml di cui sopra dovrei mettere la riga di codice nella mia pagina xaml, in modo che avrebbe effetto sulla colonna ListView. E usando IValueConverter funziona bene la prima volta quando lo schermo viene caricato, ma quando ottimizzo lo schermo o ridimensiono lo schermo non ridimensiona la larghezza della colonna di conseguenza. – Yogesh

+0

forse questo potrebbe aiutare http://stackoverflow.com/questions/560581/how-to-autosize-and-right-align-gridviewcolumn-data-in-wpf – Klaus78

+0

Puoi metterlo ovunque su quella pagina xaml dove stai mostrando il tuo ListView. Diciamo a Row = 0 e Column = 0 della griglia principale della pagina. –

3

ho postato il mio approccio a questo qui, che è un po 'diverso (ma ha trovato che è molto affidabile e consente colonne di larghezza percentuale https://stackoverflow.com/a/10526024/41211) come ho provato sopra e stava trovando il mio elaborarsi di devenv.exe al massimo mentre era costantemente cercando di rivalutare la mia vista designer con il bove legami dinamici.

-2

Con la group columns view definition, il Kettic GridView consente agli utenti di creare visualizzare gruppi di colonne e visualizzazione HTML per i dati nella griglia

+0

Si prega di inviare un esempio di codice per illustrare le tue parole. – AlexB

Problemi correlati