Ich erstelle derzeit ein css media
/Android layout
ähnliches Verhalten in WPF. Grundsätzlich habe ich Auflösungskategorien basierend auf drei Werten für die Bildschirmbreite: 800px, 1280px und 1920px.Automatische Größenanpassung von WPF-Fenstern mit fester Größe mit Konvertern während der Änderung der Auflösung
Es gibt drei entsprechende Ressourcenwörterbücher, die Int32
Werte mit Schlüsseln für die UI-Elemente enthalten. Ein Beispiel-Eintrag ist:
<sys:Int32 x:Key="initial_screen_width">1600</sys:Int32>
Mein IConverter
einfach überprüft die Bildschirmauflösung Ebene (der auf Bildschirmbreite basiert) und gibt den Schlüssel im Wörterbuch mit der entsprechenden Auflösung:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int dimension = 0;
object value2 = value;
string resourceId = (string)parameter;
if(resourceId is string)
{
dimension = GetDimension(resourceId, GetResolutionLevel());
}
return dimension;
}
Schließlich I einfach binden die UserControl
Attribute, die mit dem Konverter:
<UserControl
...
Height="{Binding Converter={StaticResource LayoutDimensionConverter}, ConverterParameter=initial_screen_height}"
...
>
Es perfekt funktionieren fine-- die entsprechenden Dimensionen zurückgeführt werden. Ich kann jedoch keine Möglichkeit finden, die Änderung der Auflösung zu verarbeiten (Aktualisieren der Benutzeroberfläche, um sie erneut anzupassen). Ich fand einige Links in Bezug auf die Verwendung von Update
- WPF Force rebind
- WPF Binding from System.Windows.SystemParameters.PrimaryScreenWidth with a Converter
so habe ich versucht, die Systemparameter als statische Variablen verwenden, aber die Auflösung Änderung nicht erkannt wird. Gibt es Möglichkeiten, dies zu tun?