Есть DataGrid
, при выборе строки которого выпадает RowDetailsTemplate
, в DataTemplate
указан еще один DataGrid
. Суть в том что грид внутри DataTemplate
привязан к ObservableCollection
и должен отображать некоторую информацию в зависимости от выбранной строки основного DataGrid
. Собственно разметка :
<DataGrid x:Name="first" IsReadOnly="True" AutoGenerateColumns="False" RowHeight="30" GridLinesVisibility="None" ItemsSource="{Binding ClientListCollection}" SelectedValue="{Binding KlientForDetails, Mode=OneWayToSource}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding SelectKlientForDetails}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding NameSimple}" Width="*" />
<DataGridTextColumn Binding="{Binding order}" MinWidth="100" Width="100"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<Grid>
<DataGrid x:Name="second" IsReadOnly = "True" AutoGenerateColumns="False" RowHeight="20" Height="100" ItemsSource="{Binding klientDetails,Mode=TwoWay}">
<DataGrid.Columns>
<DataGridTextColumn Binding ="{Binding title}" Width="100" />
<DataGridTextColumn Binding="{Binding value}" Width="*"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
Проблема в том, что при выборе строки first
грида грид second разворачивается но совершенно пустым.
Однако если вывести second
из под RowDetailsTemplate
- заполняется как положено(т.е. дело не во вьюмо дели).
Можно конечно сделать 2 грида где один показывает просто список обьектов, а второй детальную информацию по нему но хочется именно что бы при выборе строки, с RowDetailsTemplate
. Как исправить эту разметку?
У меня есть предположение, что это происходит из-за размеров контейнера, в котором размещен основной DataGrid
. Поэтому как обещал в коментариях привожу разметку окна.
XAML
код:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModel="clr-namespace:WpfApplication4.ViewModel"
Title="MainWindow"
Width="500"
Height="500"
mc:Ignorable="d">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding ClientListCollection}">
<DataGrid.Columns>
<DataGridTextColumn Width="*"
Binding="{Binding NameSimple}" />
<DataGridTextColumn Width="100"
MinWidth="100"
Binding="{Binding Order}" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate DataType="{x:Type viewModel:ParentViewModel}">
<DataGrid AutoGenerateColumns="False"
IsReadOnly="True"
ItemsSource="{Binding Details}">
<DataGrid.Columns>
<DataGridTextColumn Width="100"
Binding="{Binding Title}" />
<DataGridTextColumn Width="*"
Binding="{Binding Value}" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
<Button Grid.Row="1"
Command="{Binding DoCommand}"
Content="Тыц" />
</Grid>
</Window>
а так же ViewModel
public class ParentViewModel : ViewModelBase
{
public string NameSimple { get; set; } // INPC
public string Order { get; set; } // INPC
public ObservableCollection<DetailsViewModel> Details { get; set; }
public ParentViewModel()
{
Details = new ObservableCollection<DetailsViewModel>();
}
}
public class DetailsViewModel : ViewModelBase
{
public string Title { get; set; } // INPC
public int Value { get; set; } // INPC
}
public class MainViewModel : ViewModelBase
{
public ObservableCollection<ParentViewModel> ClientListCollection { get; set; }
public MainViewModel()
{
ClientListCollection = new ObservableCollection<ParentViewModel>();
// Заполняем данными ClientListCollection...
}
}
P.S. Некоторый вещи для вроде EventTrigger
убраны для того что бы не загромождать код.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите, как вnet core создавать и использовать файл кофигурации (то что в
Как можно ответить на запрос к примеру три раза по разномуПервый запрос один ответ, второй запрос на тот же адрес другой ответ и третий запрос...
запрос выдает ошибку 404 с комментарием "Not found"В качестве бд использую Mongoose