J'essaie de faire fonctionner une grille de données WPF à partir d'un contrôle utilisateur que je suis en train de construire. Les choses semblent fonctionner correctement. Mais j'ai remarqué ce message dans la fenêtre Output de l'IDE :
System.Windows.Data Error : 39 : BindingExpression path error : 'Name' property not found on 'object' ''Object' (HashCode=18165668)'. BindingExpression:Path=Name ; DataItem='Object' (HashCode=18165668) ; l'élément cible est 'TextBlock' (Name='') ; la propriété cible est 'Text' (type 'String') Erreur System.Windows.Data : 39 : Erreur de chemin de BindingExpression : la propriété 'Department' n'est pas trouvée sur 'object' ''Object' (HashCode=18165668)'. BindingExpression:Path=Name ; DataItem='Object' (HashCode=18165668) ; l'élément cible est 'TextBlockComboBox' (Name='') ; la propriété cible est 'SelectedItem' (type 'String')
Ce que j'essaie de faire, c'est d'ajouter manuellement des colonnes à la grille de données à partir de XAML et de les lier à un objet que j'ai dans le code C#.
Voici mon code XAML :
<UserControl x:Class="Sting.Utilities.MyDataGrid" Name="This"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
Height="600" Width="800">
<Grid>
<toolkit:DataGrid AutoGenerateColumns="False" Name="myDataGrid" Margin="10" ItemsSource="{Binding ElementName=This, Path=MyData}">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<toolkit:DataGridComboBoxColumn Header="Department" x:Name="_Departmens" SelectedItemBinding="{Binding Department}"/>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
</Grid>
</UserControl>
Et voici mon code C# :
namespace Sting.Utilities
{
///
/// Interaction logic for UserControl1.xaml
///
public partial class MyDataGrid : UserControl
{
DataTable _myData;
public DataTable TestData { get { return _testData; } }
public MyDataGrid()
{
// Initialize data table
_myData = new DataTable();
_testData.Columns.Add(new DataColumn("Name", typeof(string)));
_testData.Columns.Add(new DataColumn("Department", typeof(string)));
// Temp Code: User should add rows
DataRow row = _testData.NewRow();
row["Name"] = "John Smith";
row["Department"] = "Accounting";
_testData.Rows.Add(row);
// Initialize combo boxes
List departmentComboBoxList = new List() {"Accounting", "Purchasing", "Engineering"};
_Departments.ItemsSource = departmentComboBoxList;
}
}
}
Nous vous remercions de nous faire part de vos commentaires. Je vous remercie de votre attention.