in una finestra di 630 x 400, che sto caricando elementi ci XAML:Come ottenere un controllo utente da allungare per riempire lo spazio assegnato?
- menù in alto
- controllo utente dinamica
- piè di pagina in fondo
Il problema è che quando Ho impostato lo sfondo di UserControl, , il colore scende solo fino al contenuto. Voglio lo sfondo di UserControl per coprire l'intero UserControl, ovviamente. Ho provato:
- VerticalContentAlignment = "Stretch" nel UserControl
- VerticalAlignment = "Stretch" nel UserControl
- VerticalContentAlignment = "Stretch" nel MainView
- V erticalAlignment = "Stretch" nel MainView
Ma il colore rifiuta ancora di scendere. Non voglio impostare una larghezza fissa poiché l'utente è in grado di aumentare la dimensione dell'applicazione.
Come posso ottenere il colore di sfondo del mio UserControl per riempire l'intera area di UserControl anziché solo l'area del suo contenuto?
PageItemOptionsView.xaml:
<UserControl x:Class="TestMenu234.Views.PageItemOptionsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
VerticalContentAlignment="Stretch"
VerticalAlignment="Stretch"
Background="#ddd">
<StackPanel Margin="10">
<TextBlock Text="This is the options area."/>
<Button Content="Click to go to the Manage Customers page."
Width="200"/>
</StackPanel>
</UserControl>
MainView.xaml:
<Window x:Class="TestMenu234.Views.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:TestMenu234.Commands"
xmlns:vm="clr-namespace:TestMenu234.ViewModels"
xmlns:v="clr-namespace:TestMenu234.Views"
Title="Main Window" Height="400" Width="630" MinWidth="630">
...
<DockPanel LastChildFill="False">
<Menu DockPanel.Dock="Top">
<MenuItem
Header="Pages" ItemsSource="{Binding AllPageItemViewModels}"
ItemTemplate="{StaticResource CodeGenerationMenuTemplate}"/>
</Menu>
<ContentControl
DockPanel.Dock="Top"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
Content="{Binding CurrentPageItemViewModel}"/>
<Border DockPanel.Dock="Bottom" Padding="5 5 5 0" Background="#eee">
<Grid Background="#eee">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="300"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<Slider
Grid.Column="0"
HorizontalAlignment="Left"
Value="{Binding CurrentPageItemViewModelIndex}"
Width="300"
Minimum="0"
Maximum="{Binding HighestPageItemIndex}"/>
<TextBlock Grid.Column="1"
HorizontalAlignment="Center" FontWeight="Bold"
Text="{Binding CurrentPageItemViewModelTitle}"/>
<DockPanel Grid.Column="2" Margin="0 0 0 5" LastChildFill="False">
<Button
Margin="3 0 0 0"
DockPanel.Dock="Right"
HorizontalAlignment="Right"
Content="Next" Command="{Binding NextPageCommand}"/>
<Button
DockPanel.Dock="Right"
Content="Prev" Command="{Binding PreviousPageCommand}"/>
</DockPanel>
</Grid>
</Border>
</DockPanel>
</Window>
Ok, che è stato molto bello. Non avevo intenzione di provare il tuo suggerimento perché pensavo "ma non voglio che il mio controllo dei contenuti sia l'ultimo figlio, ma il penultimo figlio". L'ho provato lo stesso e funziona. La ragione è che "l'ultimo figlio" di un DockPanel non è il bambino "più lontano verso il basso", ma il bambino "ultimo elencato nello XAML". Molto buono a sapersi. –
Quando lo faccio il controllo si riempie sì ma si sovrappone alla mia barra di stato –