Привет привет всем
У меня недавно была проблема.
Я попытался поставить один datagrid в другой datagrid.
Главный datagrid имеет два столбца - текст и шаблон (здесь я помещаю еще один datagrid). Внутренний datagrid имеет один текстовый столбец.
Проблема проявляется, когда высота текстовой ячейки главного DG превышает общую высоту внутренних DG-клеток.
Что-то вроде этого:
Image
Мой вопрос: могу ли я что-нибудь сделать с серым прямоугольником? Могу ли я разделить серой высоту между строками? Или простые строки растяжения?
Или есть лучший способ сделать это? Не только двухуровневый набор данных, но и 3,4,5-уровня и для более сложных данных.WPF стрейч строк вертикально
Простой пример:
окна: за
<DockPanel>
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" HeadersVisibility="None" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Col1}" Width="*"/>
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Path=Col2}" AutoGenerateColumns="False" HeadersVisibility="None" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DockPanel>
Код:
public class Test1 : NotifyPropertyClass
{
private string col1;
public string Col1
{
get { return col1; }
set { col1 = value; OnPropertyChanged("Col1"); }
}
private List<string> col2;
public List<string> Col2
{
get { return col2; }
set { col2 = value; OnPropertyChanged("Col2"); }
}
}
public ObservableCollection<Test1> dc;
public MainWindow()
{
dc = new ObservableCollection<Test1>()
{
new Test1() { Col1 = "00" + Environment.NewLine + Environment.NewLine + Environment.NewLine + Environment.NewLine + "00",
Col2 = new List<string>() { "123", "456"} }
};
DataContext = dc;
InitializeComponent();
}
Вы можете избавиться от серого цвета, просто установив Фоновая свойство DataGrid, но я предполагаю, что вы хотите больше, чем это? – mm8
@ mm8 Да, я хочу растянуть строки по вертикали. Цвет не имеет значения. –
См. Мой ответ. – mm8