Я привязал данные к данным (которые заполнены во время выполнения) к моему datagrid и имеет один столбец, в котором перечислены пути файлов. Я настраиваю этот столбец, чтобы заменить путь к файлу кнопкой изображения, чтобы открыть файл при нажатии. Я получаю следующую ошибку, но не смог ее решить. Любое направление будет принята с благодарностью!Необработанное исключение при событии с нажатием кнопки
Ошибка: Необработанное исключение типа «Microsoft.CSharp.RuntimeBinder.RuntimeBinderException» произошло в System.Core.dll Дополнительная информация: «System.Data.DataRowView» не содержит определения для «Master»
Я получаю сообщение об ошибке на событии моей кнопки ... "d.Master".
private void ButtonClick(object sender, RoutedEventArgs e)
{
Button button2 = (Button)e.OriginalSource;
dynamic d = button2.DataContext;
string filepath = d.Master;
Process.Start(filepath);
}
DataGrid:
<DataGrid x:Name="DataGrid1" HorizontalAlignment="Stretch"
Margin="650,197,449,0" VerticalAlignment="Stretch"
AutoGenerateColumns="True" AutoGeneratingColumn="DataGrid_AugoGeneratingColumn" ItemsSource="{Binding fileTable}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Master" CellTemplate="{StaticResource DataTemplate2}"/>
</DataGrid.Columns>
</DataGrid>
DataTemplate
<DataTemplate x:Key="DataTemplate2">
<Button Name="fileButton" Click="ButtonClick" Width="30" Height="30" BorderBrush="#FF707070" BorderThickness="1,1,0,1">
<Button.Background>
<ImageBrush ImageSource="C:\Images\PDFicon.png" Stretch="Uniform"/>
</Button.Background>
</Button>
</DataTemplate>
Метод AutoGeneratingColumn:
private void DataGrid_AugoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.Column.Header.ToString() == "Master")
{
DataGridTemplateColumn templateColumn = new DataGridTemplateColumn //create new template column
CellTemplate = (DataTemplate) Resources["DataTemplate2"]
e.Column = templateColumn; // Replace the auto-generated column with the templateColumn.
}
else
{
e.Column.Header = "Expired";
}
}
Ошибка кажется достаточно ясной. Ваш код предполагает, что объект имеет свойство «Мастер», но это не так. Но вы не предоставили хороший [mcve], который четко показывает контекст этого кода и то, что вы могли бы подразумевать, вместо того, чтобы пытаться получить свойство «Мастер». Возможно, вы можете добавить свойство «Мастер», как было предложено, возможно, нет. Невозможно знать без лучшего примера кода. –