Im folgenden XAML wird die Schaltfläche an die Breite des Fensters angepasst, einschließlich der Größe des Fensters. Der TextBlock und die blaue Box sind jedoch zentriert. Wie würden Sie es ändern, so dass: 1) der TextBlock ist innerhalb der Schaltfläche, aber links mit der tatsächlichen Breite der Schaltfläche (dh auf der linken Seite des Fensters) 2) der Canvas ist innerhalb der Schaltfläche, aber rechts ausgerichtet mit der tatsächlichen Tastenbreite (dh auf der rechten Seite des Fensters)So erhalten Sie Schaltflächeninhalt zum Füllen der Breite in WPF
Es scheint, "HorizontalAlignment = Stretch" funktioniert in diesem Fall nicht, und wenn Sie die automatische Größenanpassung verwenden, wächst das Raster innerhalb der Schaltfläche immer nur an die minimale Breite, die für seinen Inhalt benötigt wird.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Window"
Title="test"
Width="640" Height="480">
<Grid x:Name="LayoutRoot">
<Button Height="30">
<Grid HorizontalAlignment="Stretch">
<TextBlock Text="Sample Text" HorizontalAlignment="Stretch" TextAlignment="Left"></TextBlock>
<Canvas Width="40" Background="AliceBlue" HorizontalAlignment="Right"></Canvas>
</Grid>
</Button>
</Grid>
</Window>
Das funktioniert - danke! Können Sie erklären, warum es funktioniert? –
Da, wenn Sie Elemente in Ihre Schaltfläche einfügen (wie Sie in Ihrer Frage getan haben), Sie tatsächlich "Button.Content" festlegen, aber was Sie tun wollten, war das Layout der Schaltfläche ändern und das kann durch Festlegen von "Button.Template" erreicht werden ". –