我有一个dockpanel,我使用ItemsControl动态填充以填充面板.dockpanel需要来自itemscontrol列表的最后一个子节点来填充面板的其余部分,但是如果我以这种方式填充它似乎不会发生...我该怎么做才能让最后一个项目扩展?
我如何设置它的片段:(注意我将dockpanel背景设置为蓝色,以便我可以区分填充的用户控件和面板的背景)
<DockPanel Background="Blue" LastChildFill="True" Margin="0">
<ItemsControl ItemsSource="{Binding Requirements}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:TMGrid2View Baseline="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
我目前关于发生了什么的假设是将子填充应用于itemscontrol而不是itemscontrol中填充的子代.我过去曾经使用过setter来指定孩子应该停靠在面板的一侧......例如,似乎没有一个子设置器选项来让它扩展...
在UserControl我有:
<Grid>
<DockPanel Grid.Column="0"
LastChildFill="True">
<Label x:Name="ProductName"
HorizontalAlignment="Stretch"
DockPanel.Dock="Top"
Background="Red"
Height="60" />
<Label x:Name="Versie"
HorizontalAlignment="Stretch"
DockPanel.Dock="Top"
Background="Green"
Height="20" />
<Label x:Name="Copyright"
HorizontalAlignment="Stretch"
DockPanel.Dock="Top"
Background="Blue"
Height="20" />
<Label x:Name="Company"
HorizontalAlignment="Stretch"
DockPanel.Dock="Top"
Background="Yellow"
Height="20" />
<Label x:Name="Omschrijving"
HorizontalAlignment="Stretch"
**--> Answer: add this: VerticalAlignment="Stretch"**
Background="Tomato"/>
</DockPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
我预计最后一个标签会填充dockpanel/grid中的可用垂直空间,因为LastChildFill="True".然而它的高度是10的默认"自动",它不会填充.
最后一个标签不响应DockPanel.Dock,我认为这是好的,结果是LastChildFill="True".
我该怎么做才能让高度填满剩余的高度?
在我开始之前,这里有一点背景知识.我开始在WPF中创建我的应用程序,就像我以前在WinForms中编程一样.显然,这完全绕过了WPF的优势.所以现在我已经阅读了更多关于WPF和MVVM框架的内容,我开始调整我的应用程序以模型 - 视图 - ViewModel方式工作.
事先,我曾经使用Window的代码隐藏,只是处理了MouseDown RoutedEvents然后继续并提示一个签名窗口.我的DockPanel和Image似乎没有Command.
我怎样才能以MVVM的方式做到这一点?RoutedEvents是解决这种情况的方法吗?
<DockPanel Grid.Row="1" HorizontalAlignment="Right" Width="300">
<Button x:Name="startPackageSendButton" Command="{Binding StartPackageSendingProcessCommand}" Style="{StaticResource blueButtonStyle}" Content="Start" Width="100" VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Visible" HorizontalAlignment="Right"/>
<Button x:Name="clearPackageSendButton" Command="{Binding ClearPackageSendingProcessCommand}" Style="{StaticResource blueButtonStyle}" Content="Clear" Width="100" VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Collapsed" HorizontalAlignment="Right"/>
<Button x:Name="cancelPackageSendButton" Command="{Binding CancelPackageSendingProcessCommand}" Style="{StaticResource blueButtonStyle}" Content="Stop" Width="100" VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Visible" HorizontalAlignment="Right"/>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
我正在使用Dockpanel水平对齐堆叠一些按钮。如果某些按钮不是,Visible我在按钮之间有空格。
如果按钮未Visibility设置为可见,我如何消除空格?有什么技术可以达到这种效果吗?
编辑:我按照建议将隐藏更改为折叠。