none
WPF - Falsche Bildschirmauflösung RRS feed

  • Frage

  • Hallo,

    ich habe ein Problem bei der Berechnung von Zellenbreiten und Höhen in einem Grid. Um das zu realisieren zu können habe ich eine MultiValueConverter benutzt. Leider werden mir falsche Auflösung des Windows geliefert. Anstelle von 1080 x 1920 erhalte ich 1094 x 1934. Damit schlägt meine Rechnung fehl.

    Public Class MultiValueConverter
        Implements IMultiValueConverter
    
        Public Function Convert(values() As Object, targetType As Type, parameter As Object, culture As Globalization.CultureInfo) As Object Implements IMultiValueConverter.Convert
            Dim v0 = CDbl(values(0))
            Dim v1 = CDbl(values(1))
            If v0 > v1 Then
                Return New GridLength(v1 / 2)
            Else
                Return New GridLength(v0 / 2)
            End If
        End Function
    
        Public Function ConvertBack(value As Object, targetTypes() As Type, parameter As Object, culture As Globalization.CultureInfo) As Object() Implements IMultiValueConverter.ConvertBack
            Throw New NotSupportedException
        End Function
    
    End Class
                <RowDefinition>
                    <RowDefinition.Height>
                        <MultiBinding Converter="{StaticResource MultiValueConverter}">
                            <Binding Path="ActualHeight" ElementName="FRM_Main"/>
                            <Binding Path="ActualWidth" ElementName="FRM_Main"/>
                        </MultiBinding>
                    </RowDefinition.Height>
                </RowDefinition>
    

    Danke für jede Hilfe

    Gruß Scotty

    Mittwoch, 30. April 2014 15:13

Antworten

  • Hallo,
    ich vermute mal, dass bei einem maximierten Fenster die Actual-Größenangaben den unsichtbaren Fensterrahmen mit einbeziehen. Darum kommen dabei diese "schiefen" Werte heraus.

    Du solltest aber sowieso mit den Größen des Grids rechnen. Denn das Fenster hat einen Rahmen, dessen Größe du sowieso nicht kennst (Betriebssystem- und Einstellungsabhängig). Das oberste Grid im Window hat die tatsächliche zur Verfügung stehende Größe.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Karsten Sosna Donnerstag, 1. Mai 2014 06:13
    Mittwoch, 30. April 2014 15:50
    Moderator

Alle Antworten

  • Hallo,
    ich vermute mal, dass bei einem maximierten Fenster die Actual-Größenangaben den unsichtbaren Fensterrahmen mit einbeziehen. Darum kommen dabei diese "schiefen" Werte heraus.

    Du solltest aber sowieso mit den Größen des Grids rechnen. Denn das Fenster hat einen Rahmen, dessen Größe du sowieso nicht kennst (Betriebssystem- und Einstellungsabhängig). Das oberste Grid im Window hat die tatsächliche zur Verfügung stehende Größe.


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert Karsten Sosna Donnerstag, 1. Mai 2014 06:13
    Mittwoch, 30. April 2014 15:50
    Moderator
  • Hallo Tom,

    mit dem obersten Grid sieht es gut aus - Danke.

    Gruß Scotty

    Donnerstag, 1. Mai 2014 06:12