Я только начинаю работать с WPF и MVVM и мне удалось связать мой Datagrid со списком ProductList моего класса DataContext ViewModel. Однако сейчас я пытаюсь связать кнопки внутри моей DataGrid с некоторыми командами моего класса DataContext.
<DataGrid x:Name="myDataGrid" ItemsSource="{Binding ProductsList}" x:FieldModifier="public" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="No MAT" Binding="{Binding MATProductNumber}" Width="0.1*"/>
<DataGridTextColumn Header="Format" Binding="{Binding tblFormat.FormatName}" Width="0.1*"/>
<DataGridTextColumn Header="Nom produit" Binding="{Binding tblProduct.ProductName}" Width="0.1*"/>
<DataGridTextColumn x:Name="productGradeHeader" Header="Grade" Binding="{Binding tblGrade.GradeName}" Width="0.1*"/>
<DataGridTemplateColumn Width=".1*"
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button x:Name="leftArrowSearchButton" Command="{Binding PreviousPageCommand}" CommandParameter="1">
<materialDesign:PackIcon Kind="ArrowLeftThick" Width="25" Height="25" VerticalAlignment="Center"/>
</Button>
<Button x:Name="rightArrowSearchButton" Command="{Binding NextPageCommand}" CommandParameter="1">
<materialDesign:PackIcon Kind="ArrowRightThick" Width="25" Height="25" VerticalAlignment="Center"/>
</Button>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Эта строка прямо здесь должна связываться с PreviousPageCommand в моем контексте данных
<Button x:Name="leftArrowSearchButton" Command="{Binding PreviousPageCommand}" CommandParameter="1" ToolTip="Voir la page précédente" Height="24" Width="53" Margin="0,0,20,0">
Я отладил и обнаружил, что он даже не вызывает функцию. Поэтому я почти уверен, что проблема связана с привязкой.
Кажется, моя кнопка пытается выполнить привязку к элементу ProductsList. Есть ли способ вернуться на один уровень вверх? Я уже пытался привязать свои кнопки к DataContext.PreviousPageCommand
Заранее спасибо!
Редактировать 1: Вот код в бэкэнде в соответствии с запросом
public ObservableCollection<tblMATProduct> ProductsList { get; set; }
private void NextPageScrollCommand(string number)
{
Page++;
navigate(Page, Size);
}
public void navigate(int page, int size)
{
var result = new ObservableCollection<tblMATProduct>(db.tblMATProduct.Include(s => s.tblGrade).Include(s => s.tblProduct).Include(s => s.tblFormat).OrderBy(s => s.MATProductID).Skip(page * size).Take(size).ToList());
ProductsList = result;
}
ProductsList is Обновление, я вижу это в отладчике. Не обновляется только пользовательский интерфейс.
Редактировать 2: Теперь все работает нормально! Просто добавил эту строку в мой список ProductsList:
set
{
SetProperty(ref _products, value);
}