C# WPF中网格的隐式行定义

C# WPF中网格的隐式行定义,c#,wpf,xaml,wpfdatagrid,C#,Wpf,Xaml,Wpfdatagrid,在用XAMl设计网格时,我们必须明确地告诉网格中有多少行 假设我们正在创建一个表单类型的应用程序。用户需要在其中填写其信息。有一个标签,然后是一个文本框。这个重复10次 <Label Content="Name" /> <TextBox Text={Binding SomethingText"} /> 改为创建一个UserControl,并在StackPanel或Dockpanel中重复它: <UserControl ...> <Grid&g

在用XAMl设计网格时,我们必须明确地告诉网格中有多少行

假设我们正在创建一个表单类型的应用程序。用户需要在其中填写其信息。有一个标签,然后是一个文本框。这个重复10次

<Label Content="Name" />
<TextBox Text={Binding SomethingText"} />


改为创建一个
UserControl
,并在
StackPanel
Dockpanel
中重复它:

<UserControl ...>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="60" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Label x:Name="label" Grid.Row="0" Grid.Column="0"/>
        <TextBox x:Name="textBox" Grid.Row="0" Grid.Column="1"/>
    </Grid>
</UserControl>
<DockPanel>
    <c:YourUserControl DockPanel.Dock="Top" Label="Name" Value="{Binding SomethingText}"/>
    <c:YourUserControl DockPanel.Dock="Top" Label="Address" Value="{Binding SomeText}"/>
</DockPanel>
<StackPanel>
    <c:YourUserControl Label="Name" Value="{Binding SomethingText}"/>
    <c:YourUserControl Label="Address" Value="{Binding SomeText}"/>
</StackPanel>
堆叠面板

<UserControl ...>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="60" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Label x:Name="label" Grid.Row="0" Grid.Column="0"/>
        <TextBox x:Name="textBox" Grid.Row="0" Grid.Column="1"/>
    </Grid>
</UserControl>
<DockPanel>
    <c:YourUserControl DockPanel.Dock="Top" Label="Name" Value="{Binding SomethingText}"/>
    <c:YourUserControl DockPanel.Dock="Top" Label="Address" Value="{Binding SomeText}"/>
</DockPanel>
<StackPanel>
    <c:YourUserControl Label="Name" Value="{Binding SomethingText}"/>
    <c:YourUserControl Label="Address" Value="{Binding SomeText}"/>
</StackPanel>


由于您总是使用相同的控件,创建一个
UserControl
并在
DockPanel
StackPanel
中重复它不是更好吗?这是什么意思?我会给您一个答案。但如果您希望第一列的宽度与内容大小相适应,它可能会不同步。