У меня следующая ситуация: у меня приложение с одним окном, которое позволяет пользователям переключаться между несколькими вкладками. Контент реализован с использованием Frame
и Pages
. На некоторых страницах есть DataGrids
, которые имеют собственные заголовки столбцов.
Page.xaml
<DataGrid x:Name="dataGridAircrafts"
ItemsSource="{Binding Aircrafts.Result}"
AutoGenerateColumns="False"
IsReadOnly="True"
Grid.Row="0"
CanUserResizeRows="False"
SelectionMode="Single"
HorizontalScrollBarVisibility="Visible">
<DataGrid.Columns>
<DataGridTextColumn x:Name="columnRegistrationDataGridAircrafts"
Binding="{Binding Registration}"
CanUserSort="False">
<DataGridTextColumn.Header>
<controls:NoSearchColumnHeaderControl
Text="Registration"
Column="{Binding ElementName=columnRegistrationDataGridAircrafts}"
DataGrid="{Binding ElementName=dataGridAircrafts}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
NoSearchColumnHeaderControl.xaml.cs
public DataGridTextColumn Column
{
get { return (DataGridTextColumn)GetValue(ColumnProperty); }
set { SetValue(ColumnProperty, value); }
}
public static DependencyProperty ColumnProperty =
DependencyProperty.Register("Column", typeof(DataGridTextColumn), typeof(AbstractColumnHeaderControl));
public DataGrid DataGrid
{
get { return (DataGrid)GetValue(DataGridProperty); }
set { SetValue(DataGridProperty, value); }
}
public static DependencyProperty DataGridProperty =
DependencyProperty.Register("DataGrid", typeof(DataGrid), typeof(AbstractColumnHeaderControl));
Это прекрасно работает на странице, загруженной первым в рамку. Однако на каждой другой странице привязки имеют значение null
(Ошибка: не удается найти источник для привязки со ссылкой «ElementName = dataGridAircrafts». BindingExpression: Path = Items; DataItem = null; целевой элемент равен ' NoSearchColumnHeaderControl '(Name =' columnHeader '); целевым свойством является' DataGrid '(тип' DataGrid ')).
Это определенно связано с использованием фрейма / страницы, поскольку при запуске с другой страницей по умолчанию, тогда Привязка на этой странице работает, но не на других (включая ту, которая ранее работала). Если я начну со страницы, где нет DataGrid, то ни на одной из страниц не будет правильной привязки для этих DataGrids.
Может кто-нибудь объяснить мне, как я могу это исправить?