我正在以编程方式使用行填充WPF网格。每行都分配了一个用户控件。此用户控件包含一个Grid本身,只有一行和三列。第3列可以在ListBox中包含TextBox,ComboBox或可变数量的CheckBox。
虽然我已将用户控件中的rowheight和包含用户控件的Grid设置为Auto,但行的高度不会扩展。较低的复选框刚刚消失。我尝试了不同的东西,但没有运气。有任何想法吗?
答案 0 :(得分:3)
对于从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”。
答案 1 :(得分:0)
嗨尝试这样的事情
<DataGrid>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Height" Value="Auto"/>
</Style>
</DataGrid.RowStyle>
</DataGrid>
在codebehind中
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;
我希望这会有所帮助。
答案 2 :(得分:0)
您可以在自己背后的代码中计算行高......
myGrid.RowHeight = myGrid.RenderSize.Height / myGrid.ItemsSource.Cast<MyRowDef>().Count();