У меня есть WPG dataGrid, который заполняется через DataBinding. Этот список содержит разные столбцы. У меня есть два типа строк, один тип содержит все столбцы в строках, а другой должен охватывать один столбец по всем столбцам.
Есть ли простой способ сделать это возможным? (может быть, использовать ListView вместо DataGrid?)
Я прикрепил скриншот, как он должен выглядеть:
Я сейчас попробовал с селектором шаблона элемента:
Мои шаблоны в ресурсах (эти два шаблона не верны, но они предназначены только для тестирования!)
<DataTemplate x:Key="commentTemplate">
<TextBlock Text="{Binding}"/>
</DataTemplate>
<DataTemplate x:Key="normalTemplate">
<Image Source="{Binding }" />
</DataTemplate>
<WPFVarTab:VarTabRowItemTemplateSelector
NormalRowsTemplate="{StaticResource normalTemplate}"
CommentRowsTemplate="{StaticResource commentTemplate}"
x:Key="vartabrowItemTemplateSelector" />
и мой Datagrid:
<DataGrid AutoGenerateColumns="False" Margin="0,22,0,22"
Name="dataGrid" Grid.RowSpan="2" CanUserAddRows="True"
RowBackground="Azure" AlternatingRowBackground="LightSteelBlue"
ItemTemplateSelector="{StaticResource vartabrowItemTemplateSelector}" >
и мой селектор шаблонов:
public class VarTabRowItemTemplateSelector : DataTemplateSelector
{
public DataTemplate NormalRowsTemplate { get; set; }
public DataTemplate CommentRowsTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
S7VATRow vRow = item as S7VATRow;
if (vRow == null || string.IsNullOrEmpty(vRow.Comment))
return NormalRowsTemplate;
return CommentRowsTemplate;
}
}
Я поставил остановку в первом ряду в SelectTemplate, но это никогда не вызывается!