Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用GridSplitter分离控件不使用';星号';_C#_Wpf_Xaml - Fatal编程技术网

C# 使用GridSplitter分离控件不使用';星号';

C# 使用GridSplitter分离控件不使用';星号';,c#,wpf,xaml,C#,Wpf,Xaml,我有以下代码来创建一个包含两个TextBlock和一个gridsplitter的网格。点击一个按钮,我折叠右边的文本块,左边的文本块不会占用空间。为什么? Text1.Text = "Text1"; Text2.Text = "Text2"; split.Width = 3; Text1.Background = new SolidColorBrush(Colors.Red); Grid ingd = new Grid(); RowDefinition inrow1 = new RowDe

我有以下代码来创建一个包含两个TextBlock和一个gridsplitter的网格。点击一个按钮,我折叠右边的文本块,左边的文本块不会占用空间。为什么?

Text1.Text = "Text1";
Text2.Text = "Text2";
split.Width = 3;

Text1.Background = new SolidColorBrush(Colors.Red);


Grid ingd = new Grid();
RowDefinition inrow1 = new RowDefinition();
ColumnDefinition inCol1 = new ColumnDefinition();
ColumnDefinition inCol2 = new ColumnDefinition();
ColumnDefinition inCol3 = new ColumnDefinition();
ingd.RowDefinitions.Add(inrow1);
ingd.ColumnDefinitions.Add(inCol1);
ingd.ColumnDefinitions.Add(inCol2);
ingd.ColumnDefinitions.Add(inCol3);

// Width set here as Star for the left textblock
inCol1.Width = new GridLength(10, GridUnitType.Star);
inCol2.Width = new GridLength(3, GridUnitType.Pixel);
inCol3.Width = new GridLength(0, GridUnitType.Auto);

ingd.Children.Add(Text1);
ingd.Children.Add(split);
ingd.Children.Add(Text2);

Grid.SetColumn(Text1, 0);
Grid.SetColumn(split, 1);
Grid.SetColumn(Text2, 2);

wrap.Children.Add(ingd);
钮扣

Text2.Visibility = System.Windows.Visibility.Collapsed
split.Visibility = System.Windows.Visibility.Collapsed;
xaml


请注意,inCol1的类型为“Star”。如果我将gridlength(第一个参数)从10更改为0,则textblock根本不可见。请帮忙。我把它作为一个例子,因为我的实际应用程序很复杂

右文本块左文本块不占用空间。为什么?

Text1.Text = "Text1";
Text2.Text = "Text2";
split.Width = 3;

Text1.Background = new SolidColorBrush(Colors.Red);


Grid ingd = new Grid();
RowDefinition inrow1 = new RowDefinition();
ColumnDefinition inCol1 = new ColumnDefinition();
ColumnDefinition inCol2 = new ColumnDefinition();
ColumnDefinition inCol3 = new ColumnDefinition();
ingd.RowDefinitions.Add(inrow1);
ingd.ColumnDefinitions.Add(inCol1);
ingd.ColumnDefinitions.Add(inCol2);
ingd.ColumnDefinitions.Add(inCol3);

// Width set here as Star for the left textblock
inCol1.Width = new GridLength(10, GridUnitType.Star);
inCol2.Width = new GridLength(3, GridUnitType.Pixel);
inCol3.Width = new GridLength(0, GridUnitType.Auto);

ingd.Children.Add(Text1);
ingd.Children.Add(split);
ingd.Children.Add(Text2);

Grid.SetColumn(Text1, 0);
Grid.SetColumn(split, 1);
Grid.SetColumn(Text2, 2);

wrap.Children.Add(ingd);
*
要求填充网格报告的所有可用空间。仅仅因为内部控制隐藏了自己,并不能改变这样一个事实,被星型化为扩展到所有可用空间

我希望列表框在tabcontrol和GridSpliter折叠时占据所有空间

然后,您需要将
列表框的列设置为星形,并将隐藏自身的控件的其他两列设置为
自动

自动调整大小,将根据控件调整列的大小(无论是否隐藏),根据栅格的外部规格调整星形大小,并忽略内部控件。我相信你把概念弄混了

右文本块左文本块不占用空间。为什么?

Text1.Text = "Text1";
Text2.Text = "Text2";
split.Width = 3;

Text1.Background = new SolidColorBrush(Colors.Red);


Grid ingd = new Grid();
RowDefinition inrow1 = new RowDefinition();
ColumnDefinition inCol1 = new ColumnDefinition();
ColumnDefinition inCol2 = new ColumnDefinition();
ColumnDefinition inCol3 = new ColumnDefinition();
ingd.RowDefinitions.Add(inrow1);
ingd.ColumnDefinitions.Add(inCol1);
ingd.ColumnDefinitions.Add(inCol2);
ingd.ColumnDefinitions.Add(inCol3);

// Width set here as Star for the left textblock
inCol1.Width = new GridLength(10, GridUnitType.Star);
inCol2.Width = new GridLength(3, GridUnitType.Pixel);
inCol3.Width = new GridLength(0, GridUnitType.Auto);

ingd.Children.Add(Text1);
ingd.Children.Add(split);
ingd.Children.Add(Text2);

Grid.SetColumn(Text1, 0);
Grid.SetColumn(split, 1);
Grid.SetColumn(Text2, 2);

wrap.Children.Add(ingd);
*
要求填充网格报告的所有可用空间。仅仅因为内部控制隐藏了自己,并不能改变这样一个事实,被星型化为扩展到所有可用空间

我希望列表框在tabcontrol和GridSpliter折叠时占据所有空间

然后,您需要将
列表框的列设置为星形,并将隐藏自身的控件的其他两列设置为
自动


自动调整大小,将根据控件调整列的大小(无论是否隐藏),根据栅格的外部规格调整星形大小,并忽略内部控件。我相信你把概念弄混了。

我认为,
ingd
WrapPanel
中没有延伸,而且
inCol1
不会增长。尝试另一种类型的面板:
Grid
I将扭曲面板更改为Grid,可以正常工作。但是如果我将gridlength(第一个参数)从10更改为0,则textblock根本不可见。为什么
0
?任何>0的都可以。默认值为
1
是否仍然可以使用包裹面板而不是网格?正如建议的那样,如何使用wrappanel进行拉伸?您需要什么样的布局?
WrapPanel
中是否有更多元素?
indg
应该如何定位?我认为,
ingd
WrapPanel
中没有延伸,而且
inCol1
不会增长。尝试另一种类型的面板:
Grid
I将扭曲面板更改为Grid,可以正常工作。但是如果我将gridlength(第一个参数)从10更改为0,则textblock根本不可见。为什么
0
?任何>0的都可以。默认值为
1
是否仍然可以使用包裹面板而不是网格?正如建议的那样,如何使用wrappanel进行拉伸?您需要什么样的布局?
WrapPanel
中是否有更多元素?应如何定位
indg