Я пытаюсь выяснить способ определения пользовательского UserControl, как на следующем рисунке:WPF Пользовательские управления сетки
В то время как первый столбец выделяет строку, второй столбец подчеркивает «внутренний строка ", и для каждой внешней строки должно быть поле текстового поля, в которое пользователь может вводить данные.
То, с чем я борюсь, заключается в том, чтобы понять, возможно ли это. Все решения, которые я придумываю, помещают другую метку во вторую внешнюю строку (где TextField 2.1.1).
Ближайший я мог бы прийти плохой макет, который в основном сводится к ItemsControl связывания с DataTemplate определен как:
<ItemsControl Name="SelectedSampleData" Grid.Row="1" ItemsSource="{Binding SelectedSampleData}" ItemTemplate="{StaticResource DefaultTemplate}" />
<DataTemplate x:Key="DefaultTemplate">
<Grid x:Name="GridItem" MaxWidth="{Binding ElementName=Container,Path=ActualWidth}" >
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Viewbox Height="20" HorizontalAlignment="Left">
<TextBlock Grid.Row="0" Text="{Binding Path=field1}" Margin="5,1,0,0" Background="LightBlue" />
</Viewbox>
<igDP:XamDataGrid Name="GridConsuntivi" Grid.Row="1" DataSource="{Binding Path=field2List}" Margin="25,0,0,0">
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout Key="DefaultLayout">
<igDP:FieldLayout.Fields >
<igDP:Field Name="label1" IsReadOnly="True">
<igDP:Field.Settings>
<igDP:FieldSettings LabelTextWrapping="Wrap" LabelMaxWidth="100" AllowEdit="False" />
</igDP:Field.Settings>
</igDP:Field>
<igDP:Field Name="label2" IsReadOnly="True">
<igDP:Field.Settings>
<igDP:FieldSettings LabelTextWrapping="Wrap" LabelMaxWidth="70" AllowEdit="False" />
</igDP:Field.Settings>
</igDP:Field>
<igDP:Field Name="label3" IsReadOnly="True">
<igDP:Field.Settings>
<igDP:FieldSettings LabelTextWrapping="Wrap" LabelMaxWidth="70" AllowEdit="False" />
</igDP:Field.Settings>
</igDP:Field>
<igDP:Field Name="label3" IsReadOnly="True">
<igDP:Field.Settings>
<igDP:FieldSettings LabelTextWrapping="Wrap" LabelMaxWidth="95" AllowEdit="False" />
</igDP:Field.Settings>
</igDP:Field>
<igDP:Field Name="label4" IsReadOnly="True">
<igDP:Field.Settings>
<igDP:FieldSettings LabelTextWrapping="Wrap" LabelMaxWidth="180" AllowEdit="False" />
</igDP:Field.Settings>
</igDP:Field>
</igDP:FieldLayout.Fields>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
<TextBox Margin="25,10,0,0" AcceptsReturn="True" MaxWidth="{Binding ElementName=parent,Path=ActualWidth}" TextWrapping="Wrap" IsEnabled="True" Grid.Row="2" Text="{Binding Path=note}" />
<Separator Grid.Row="3"/>
</Grid>
</DataTemplate>
, который играет так:
Кроме визуальная уродство, которое, как я думаю, может быть исправлено с некоторым художественным прикосновением (чего у меня нет), я ненавижу тот факт, что есть две заголовки с одинаковой информацией. Мне хотелось бы, чтобы он чувствовал, что это единый единый компонент.
У вас есть мысли?
Я думал о размещении какого-либо конвертера в видимости заголовка xamdatagrid, который бы спрятал его, если бы это была не первая строка, но я пытался избежать такого рода изящных трюков.
Я использую Infragistics, если это помогает.
Заранее спасибо