我正在用编程方式填充一个WPF网格。每一行都被分配了一个用户控件。这个用户控件包含一个网格本身,正好有一行和3列。第3列可以包含一个TextBox,一个ComboBox或一个ListBox中可变数量的CheckBox。虽然我已经将用户控件中的行高和包含用户控件的网格设置为“自动”,但行高并没有扩展。下面的复选框只是消失了。我尝试了不同的方法,但仍然没有成功。有什么想法吗?
ttisahbt1#
对于从XAML设置“自动”宽度或高度,您可以使用double.Nan代替“Value=”Auto”。
<DataGrid> <DataGrid.RowStyle> <Style TargetType="{x:Type DataGridRow}"> <Setter Property="Height" Value="{x:Static sys:Double.NaN}"/> </Style> </DataGrid.RowStyle> </DataGrid>
别忘了加上
xmlns:sys="clr-namespace:System;assembly=mscorlib"
在XAML的开头使用“sys”。
xmd2e60i2#
您可以在自己后面的代码中计算行高。
myGrid.RowHeight = myGrid.RenderSize.Height / myGrid.ItemsSource.Cast<MyRowDef>().Count();
h7wcgrx33#
嗨试试这个
<DataGrid> <DataGrid.RowStyle> <Style TargetType="{x:Type DataGridRow}"> <Setter Property="Height" Value="Auto"/> </Style> </DataGrid.RowStyle> </DataGrid>
代码隐藏
DataGrid dg=new DataGrid(); Style style = new Style(typeof(DataGridRow)); style.Setters.Add(new Setter(DataGridRow.HeightProperty,new GridLength(20, GridUnitType.Auto))); dg.RowStyle=style;
我希望这会有所帮助。
3条答案
按热度按时间ttisahbt1#
对于从XAML设置“自动”宽度或高度,您可以使用double.Nan代替“Value=”Auto”。
别忘了加上
在XAML的开头使用“sys”。
xmd2e60i2#
您可以在自己后面的代码中计算行高。
h7wcgrx33#
嗨试试这个
代码隐藏
我希望这会有所帮助。