У меня есть простой Datagrid со связыванием, и этот работает правильно и внутри RowDetailsRemplate другой Datagrid, но в этом случае привязка не работает. Можете ли вы дать мне руку с этим разобраться?Databinding in RowDetailsTemplate не работает
XAML:
<DataGrid Name="datagrid" Margin="5,0,5,0" GridLinesVisibility="None" CanUserAddRows="False" ItemsSource="{Binding nowy}" >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Expander Name="expander" IsExpanded="False" Collapsed="sw" Expanded="pos"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel>
<DataGrid Name="wz" ItemsSource="{Binding flight_list}"/>
</StackPanel>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
C#:
public ObservableCollection<flight> flight_list { get; set; }
public ObservableCollection<subject> nowy { get; set; }
nowy = new ObservableCollection<subject>() {
{new subject(){ Przedmiot = "J.angielski", Nauczyciel = "B.A.Krawczyk", Sala = "120", Poziom = "Średnio-zaawansowany", Status = "Uczeń"}},
{ new subject(){Przedmiot = "polski", Nauczyciel = "zły", Sala = "130", Poziom = "podstawowy", Status = "gey"}}
};
flight_list = new ObservableCollection<flight>(){new flight(){From = "Warsaw", To = "Florida", schedule = new List<string>(){"12-02-2013", "12-03-2012", "31-2"}}};
DataContext = this;
Спасибо за ответ, я исправил незначительные ошибки, которые обнаружились во время копирования, но я до сих пор не знаю, как указать второй сетку для привязки к flight_list, поскольку, насколько я предполагаю, она все еще связывается с объектом. ? –
Maximus
Если 'flight_list' действительно не связан с' subject', тогда, как я сказал, вам нужно изменить контекст привязки и указать его как 'Source' или' RelativeSource' 'Binding' [MSDN] (http: // msdn .microsoft.com/EN-US/библиотека/system.windows.data.binding.source.aspx). Когда вы пишете 'ItemsSource =" {Binding flight_list} ", это означает' ItemsSource = "{Binding Path = flight_list}" '(в текущем контексте), и вам нужно' ItemsSource = "{Binding Source = ...}" ', но это зависит от наличия 'flight_list' – dkozl
Я заменил внутри Datagrid на <Содержание ярлыка = {Binding} />, и он отображает имя объекта класса, поэтому моя презумпция была правильной. Тем не менее, все еще не работает, возможно, напишите мне, как это должно быть. –
Maximus