Ich versuche, ein Raster zu erstellen, das mit Bildschirmen unterschiedlicher Größe arbeitet. Mein Code sieht derzeit wie folgt aus:MaxWidth von 'Auto'?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" ... />
<TextBlock Grid.Column="1" ... />
</Grid>
Dies funktioniert nicht richtig, weil ich mit einem riesigen leeren Raum am Ende am Ende der ersten Spalte, wenn ich im Vollbild bin, und ich mag den Text in jedem Spalte, um benachbart zu sein. Es schrumpft die erste Spalte jedoch korrekt, wenn ich den Bildschirm verkleinern/vergrößern möchte.
Ich habe auch versucht, Code wie folgt verwendet:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" ... />
<TextBlock Grid.Column="1" ... />
</Grid>
Dieser Code sieht perfekt aus, wenn die Anwendung Vollbild ist, aber wenn ich den Bildschirm die erste Spalte passen nicht schrumpfen/die Größe schrumpfen. Es lässt mein Raster gleich groß, was meinen Text vom kleineren Bildschirm wegdrückt.
Wie kann ich die Breite in welcher Größe auch immer 'Auto' begrenzen, und immer noch die Größe ändern, wie es '*' ist?
Näher, aber wo haben Sie den Wert MinWindowWidth = "600" erhalten? Da die Länge jedes TextBlocks variieren kann, werde ich nie den genauen Wendepunkt zwischen * und Auto kennen. Brauche ich nicht 600 als Breite der ersten Spalte, wenn es als Auto eingestellt ist? Und konnte ich diesen Wert nicht als MaxWidth der ersten Spalte festlegen und dieselben Ergebnisse erzielen? –
@TS, Die 'MinWindowWidth' ist die Zusammenfassung' ActualWidth' der beiden 'TextBlock'. Wenn die tatsächliche Breite dynamisch ist, können Sie den Code dahinter berechnen und als Auslöser festlegen. Ich habe den Code in der Antwort aktualisiert, auf die Sie verweisen können. Übrigens, wenn meine Antwort Ihnen helfen würde, könnten Sie bitte als akzeptiert markieren. –
Ich habe, was ich wollte ... obwohl ich den VisualStateManager fallen gelassen habe. Im Grunde nahm ich Ihren Code-Behind und, anstatt es zu verwenden, um 'adptivetrigger.MinWindowWidth' zu setzen, benutzte es, um 'col1.MaxWidth' zu setzen. Es muss noch optimiert werden, damit es mit dem ItemsControl funktioniert, in dem es sich befindet (wahrscheinlich macht MaxWidth eine Bindung), aber das Konzept ist solide. Vielen Dank! –