控制在单个列下具有可编辑的多个字段?

时间:2012-06-15 13:49:46

标签: .net wpf winforms datagridview controls

好的,我问的是一些不常见的东西。我需要创建有usersdays of week的视图。如果我需要每个用户/每天只有一个值,我可以使用datagridview。但我需要为每个用户提供wage字段以及hour字段。截图应该会有所帮助。

enter image description here

我需要两个值都可以编辑。去哪里是一种控制方式? datagridview单元可以托管两个控件吗?这是这样的要求;我还没有决定使用Winforms或WPF,但前者是我习惯的(现在没有太多时间深入研究WPF,但我只是知道)。

有一些解决方法,例如,有一个字段,在dgv中说wage并在dgv之外的单独文本框中显示hour等。但这对我们的客户来说无法使用。 (我不介意任何hacky /古怪的解决方案/解决方法)

1 个答案:

答案 0 :(得分:1)

标题区域应该有一个标准Grid,然后'行'可以是ItemsControl,其中ItemsTemplate是每行的网格。然后,您可以在网格上使用SharedSizeScope对齐所有列。

这是我的意思的一个例子

<Grid Grid.IsSharedSizeScope="True">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid x:Name="header">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" SharedSizeGroup="col1" />
            <ColumnDefinition Width="Auto" SharedSizeGroup="col2" />
            <ColumnDefinition Width="Auto" SharedSizeGroup="col3" />
        </Grid.ColumnDefinitions>
        <TextBlock FontWeight="Bold" Text="Col1" />
        <TextBlock FontWeight="Bold" Text="Col2" Grid.Row="1" />
        <TextBlock FontWeight="Bold" Text="Col3" Grid.Row="2" />
    </Grid>
    <ItemsControl ItemsSource="{Binding Users}" Grid.Row="1" x:Name="rows">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto" SharedSizeGroup="col1" />
                        <ColumnDefinition Width="Auto" SharedSizeGroup="col2" />
                        <ColumnDefinition Width="Auto" SharedSizeGroup="col3" />
                    </Grid.ColumnDefinitions>
                    <TextBlock Text="{Binding Col1Data}" />
                    <TextBlock Text="{Binding Col2Data}" Grid.Row="1" />
                    <TextBlock Text="{Binding Col3Data}" Grid.Row="2" />
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Grid>

此方案允许您创建类似UI的数据网格,并且具有最终的轻松自定义级别。