好的,我问的是一些不常见的东西。我需要创建有users
和days of week
的视图。如果我需要每个用户/每天只有一个值,我可以使用datagridview。但我需要为每个用户提供wage
字段以及hour
字段。截图应该会有所帮助。
我需要两个值都可以编辑。去哪里是一种控制方式? datagridview单元可以托管两个控件吗?这是这样的要求;我还没有决定使用Winforms或WPF,但前者是我习惯的(现在没有太多时间深入研究WPF,但我只是知道)。
有一些解决方法,例如,有一个字段,在dgv中说wage
并在dgv之外的单独文本框中显示hour
等。但这对我们的客户来说无法使用。 (我不介意任何hacky /古怪的解决方案/解决方法)
答案 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的数据网格,并且具有最终的轻松自定义级别。