2017-02-24 7 views
0

Ich habe eine ListView mit Orientation="Horizon" was bedeutet, dass DataTemplate wird wie "Spalte" statt Zeile aussehen. Alles funktioniert gut und ListView zeigt eine Bildlaufleiste, wenn ich viele Spalten habe, die auf dem Bildschirm nicht angezeigt werden können. Ich habe MinWidth für DataTemplate festgelegt. Was ich versuche zu erreichen ist, dass, falls meine source weniger als 3 Objekte hat, Datatemplate's Breite zu erweitern, um den Bildschirm von ListView zu passen. Ich bin mir bewusst, dass ich die aktuelle Breite des Fensters bekommen mit:WPF - Rückruf, wenn die Elternansicht die Breite ändert

System.Windows.SystemParameters.PrimaryScreenWidth; 
System.Windows.SystemParameters.PrimaryScreenHeight; 

Was ich brauche, ist eine Callback-Methode ausgeführt werden, wenn die Größe des Fensters geändert wird, um die Breite Datatemplates zu aktualisieren. Ist diese Funktionalität in WPF vorhanden? Gibt es Alternativen?

+0

Werfen Sie einen Blick auf diese Frage: http://stackoverflow.com/questions/911243/wpf-extend-last-column-of -listviews-gridview – caesay

+0

Der Unterschied besteht darin, dass die Spalten der Frage statisch sind. – BlackM

Antwort

1

Was ich brauche, ist eine Callback-Methode, die ausgeführt wird, wenn die Größe des Fensters geändert wird, um die Breite der DataTemplates zu aktualisieren. Ist diese Funktionalität in WPF vorhanden?

Sie konnten die SizeChanged Ereignis für die Window oder ListView behandeln.

Dieses Ereignis wird immer dann aufgerufen, wenn sich die Größe des Elements ändert. Anschließend können Sie die Breite der Spalten in der Ereignishandler ändern, zB:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     SizeChanged += (s, e) => 
     { 
      GridView gv = listView.View as GridView; 
      gv.Columns[0].Width = ...; 
     }; 
    } 
} 
Verwandte Themen