Я написал приведенный ниже код в wpf datagrid
<DataGridTextColumn Binding = "{Binding comments}" Width = "350" Header = "Comments" IsReadOnly = "False" >
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property = "TextBlock.TextWrapping" Value = "Wrap" />
<Setter Property = "TextBlock.TextAlignment" Value = "Left"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
И получаю ошибку ниже, но сетка работает нормально. Может ли кто-нибудь помочь мне определить, почему я получаю ошибку ниже.
System.Windows.Data Error: 40 : BindingExpression path error: 'comments' property not found on 'object' ''DataRowView' (HashCode=43816328)'. BindingExpression:Path=comments; DataItem='DataRowView' (HashCode=43816328); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
Спасибо, Babbillumpa. Ваши комментарии и пример кода, опубликованный Peregrine, очень помогли. Я неправильно написал "Комментарии" в названии столбца в выражении привязки. Вместо «C» в верхнем регистре у меня есть «c» в нижнем регистре, и это вызвало ошибку выражения привязки.





Пожалуйста, опубликуйте Минимальный, полный и проверяемый пример, в котором воспроизводится ваша проблема.
Приведенный ниже код отлично подходит для меня.
DataItem.cs
public class DataItem
{
public string A => "AAAAAAAAAA AAAAAAAAAA";
public string B => "BBBBBBBBBB";
public string C => "CCCCCCCCCC";
}
MainViewModel.cs
public class MainViewModel
{
public MainViewModel()
{
DataItems = new List<DataItem>();
for (var i = 1; i <= 20; i++)
_dataItemList.Add(new DataItem());
}
public List<DataItem> DataItems {get;}
}
MainView.xaml
<Window ...>
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
<DataGrid Margin = "16" ItemsSource = "{Binding DataItems}" AutoGenerateColumns = "False">
<DataGrid.Columns>
<DataGridTextColumn Header = "A" Binding = "{Binding A}" Width = "100">
<DataGridTextColumn.ElementStyle>
<Style>
<Setter Property = "TextBlock.TextWrapping" Value = "Wrap" />
<Setter Property = "TextBlock.TextAlignment" Value = "Left"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header = "B" Binding = "{Binding B}"/>
<DataGridTextColumn Header = "C" Binding = "{Binding C}"/>
</DataGrid.Columns>
</DataGrid>
</Window>
Привет, Перегрин, Спасибо за образец. Я выполнил ваш код, сравнил его с моим и обнаружил, что в привязке я неправильно написал имя столбца «Комментарии». Вместо верхнего регистра C у меня есть строчный C, и это вызвало ошибку выражения Binding Path.
@NirmalKumarAndrews Ошибки привязки будут отображаться в окне вывода Visual Studio во время работы вашего приложения.
Вы используете неправильную привязку для столбца. Предлагаю выложить весь код datagrid.