我们说我有1行和2列。两者都有一个视频流,它会自动调整大小以填充它的内容,因此它们都占据了屏幕的一半。
我希望能够删除一个流并让第二个流填满整个屏幕。所以基本上,让第二个单元格推动填满整个屏幕,因为没有任何东西占据第一个单元格,并且推动它#34;回来。
我知道我可以通过删除单元格来实现这一点,但如果有一些设置可以实现我所描述的内容,那么它会更清晰,更简单,更容易。
编辑:
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
我只从每个中的一个开始,然后从那里动态扩展:
if (grd.ColumnDefinitions.Count == grd.RowDefinitions.Count)
{
System.Windows.Controls.ColumnDefinition newColumn;
newColumn = new System.Windows.Controls.ColumnDefinition();
grd.ColumnDefinitions.Add(newColumn);
Column = grd.ColumnDefinitions.Count - 1;
Row = 0;
}
else
{
System.Windows.Controls.RowDefinition newRow;
newRow = new System.Windows.Controls.RowDefinition();
grd.RowDefinitions.Add(newRow);
Row = grd.RowDefinitions.Count - 1;
Column = 0;
}
答案 0 :(得分:2)
尝试将Width
的{{1}}设置为GridViewColumn
,并将容器控件的0
(视图流控件本身或其容器)设置为{{1 }}
修改强>
虽然UniformGrid
可能更容易使用。然后,您只需要将控件的可见性设置为折叠(这将从宽度计算中删除该控件)。
我建议将UniformGrid的Visibility
属性设置为Collapsed
,以便将所有内容保存在一行中(否则它将开始交替添加行和列的过程)。
Rows
使用上面的代码获取灵感。第一个视频流控件包含在Grid中,只是为了演示如果您使用的控件没有公开可见性属性,您可以“添加”可见性属性。它完全是可选的。
答案 1 :(得分:0)
另一种解决方案是将两个视频流包装到网格中的单个StackPanel中。然后,将视频控件的Visibility设置为Collapsed将提供您正在寻找的功能。
然而,StackPanels确实消除了WPF“自动调整”魔法的一大块,因为它们具有无限的宽度和高度,但在某些情况下它是一个简单的解决方案。