Wpf ItemsControl不垂直拉伸
我有一个PRISM v5应用程序,这给我带来了一些麻烦Wpf ItemsControl不垂直拉伸,wpf,prism,itemscontrol,stretch,Wpf,Prism,Itemscontrol,Stretch,我有一个PRISM v5应用程序,这给我带来了一些麻烦 <!--Header region--> <ItemsControl Grid.Row="0" Grid.Column="0" regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/> <!--Main region--> <ContentControl
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
在我的UserControl
网格中有三个ItemsControls
:
<Grid VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="1*" MinWidth="50"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="50"/>
<RowDefinition MinHeight="50" />
</Grid.RowDefinitions>
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ItemsControl
Grid.Row="1"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}">
</ItemsControl>
<!--Menu region-->
<ItemsControl
Background="DarkGoldenrod"
Grid.Row="1"
Grid.Column="1"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MenuRegion}">
</ItemsControl>
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
在进行新的搜索之前,我甚至已经在谷歌上搜索到了第4页——我真的非常渴望能够垂直延伸这一页面
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
更新1:
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
因此,我将一个ItemsControl
更改为ContentControl
:
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
我是这样做的:
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
var obj = _container.Resolve<SecondView>();
var region = _manager.Regions[RegionNames.MainRegion];
region.Add(obj);
更改第二个行定义的高度
,将得到所需的结果。但现在我需要知道它有多高,因为它不会缩放
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
所以我在其他地方寻找解决办法。
有人(在某处,我不记得在哪里)说这可能会奏效:
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
<Grid.Resources>
<resources:VisibilityToStarHeightConverter x:Key="VisibilityToStarHeightConverter"/>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="50" />
<RowDefinition Height="{Binding Converter={StaticResource VisibilityToStarHeightConverter}, ConverterParameter=5}" />
</Grid.RowDefinitions>
但是我无法加载应用程序,除非在(Visivility)值上获得InvalidCastException
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
有人知道如何动态查看窗口的高度吗?项目控件是垂直拉伸的,但是您的视图将作为项目添加到项目控件中
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
对您的区域使用ContentControl
。尝试将网格行定义为拉伸,如下所示:
<!--Header region-->
<ItemsControl
Grid.Row="0"
Grid.Column="0"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.HeaderRegion}"/>
<!--Main region-->
<ContentControl
Grid.Row="1"
Grid.Column="0"
VerticalAlignment="Stretch"
VerticalContentAlignment="Stretch"
regions:RegionManager.RegionName="{x:Static infrastructure:RegionNames.MainRegion}"/>
public class VisibilityToStarHeightConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((Visibility)value == Visibility.Collapsed)
{
return new GridLength(0, GridUnitType.Star);
}
else
{
if (parameter == null)
{
throw new ArgumentNullException("parameter");
}
return new GridLength(double.Parse(parameter.ToString(), culture), GridUnitType.Star);
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="50"/>
<RowDefinition Height="*" MinHeight="50" />
</Grid.RowDefinitions>
视图的内容是什么?有些控件根本不会拉伸。最好的例子是Stackpanel。在垂直方向上,它不会超出其子级所需的最小垂直空间。我使用背景色设置为绿色的网格,而背景色设置为红色的网格@gusdor可能会有重复,这将是一个麻烦的修复(不仅仅是这个),但我会试一试,然后再报告。它仍然不能与ContentControl一起工作。你还有什么建议吗?让我收回吧。在我的高度设置中发现错误。让我也更正它-如果我指定高度,它会工作(但我不希望这样)。它仍然不起作用。您还有其他建议吗?与更新1中的结果相同。尝试查看我的更新2