以编程方式填充wpf中的网格:自动行八似乎不工作

envsm3lx  于 2023-03-24  发布在  其他
关注(0)|答案(3)|浏览(116)

我正在用编程方式填充一个WPF网格。每一行都被分配了一个用户控件。这个用户控件包含一个网格本身,正好有一行和3列。第3列可以包含一个TextBox,一个ComboBox或一个ListBox中可变数量的CheckBox。
虽然我已经将用户控件中的行高和包含用户控件的网格设置为“自动”,但行高并没有扩展。下面的复选框只是消失了。我尝试了不同的方法,但仍然没有成功。有什么想法吗?

ttisahbt

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”。

xmd2e60i

xmd2e60i2#

您可以在自己后面的代码中计算行高。

myGrid.RowHeight = myGrid.RenderSize.Height / myGrid.ItemsSource.Cast<MyRowDef>().Count();
h7wcgrx3

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;

我希望这会有所帮助。

相关问题