我知道这已经被问到了,但我已经完成了开发人员建议的几乎所有内容。
<DataGrid x:Name="Imported" VerticalAlignment="Top" DataContext="{Binding Source=list}" AutoGenerateColumns="False" CanUserResizeColumns="True">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Path=ID}"/>
<DataGridTextColumn Header="Date" Binding="{Binding Path=Date}"/>
</DataGrid.Columns>
</DataGrid>
我试图在模态对话框中显示此内容,并在模式对话框的构造函数中填充许可证列表。 但是仍然没有任何东西填充在数据网格中。
构造函数代码:
public diagboxclass()
{
List<object> list = new List<object>();
list = GetObjectList();
}
public class object
{
string id;
DateTime date;
public string ID
{
get { return id; }
set { id = value; }
}
public DateTime Date
{
get { return date; }
set { date = value; }
}
}
你们是否认为与对象列表有关?
答案 0 :(得分:31)
请不要将对象用作类名:
public class MyObject //better to choose an appropriate name
{
string id;
DateTime date;
public string ID
{
get { return id; }
set { id = value; }
}
public DateTime Date
{
get { return date; }
set { date = value; }
}
}
您应该为此课程实施INotifyPropertyChanged
,当然在Property setter 上调用它。否则更改不会反映在您的ui中。
您的 Viewmodel类/对话框类应该有Property
列表的 MyObject
。 ObservableCollection<MyObject>
是要走的路:
public ObservableCollection<MyObject> MyList
{
get...
set...
}
在xaml
Itemssource
中,您应将MyObject
设置为Datacontext
的集合。 (<DataGrid ItemsSource="{Binding Source=MyList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
<DataGridTextColumn Header="Date" Binding="{Binding Date}"/>
</DataGrid.Columns>
</DataGrid>
必须是你的对话框类!)
{{1}}
答案 1 :(得分:21)
如果没有看到所述对象列表,我相信你应该绑定到DataGrid的ItemsSource
属性,而不是DataContext
。
<DataGrid x:Name="Imported" VerticalAlignment="Top" ItemsSource="{Binding Source=list}" AutoGenerateColumns="False" CanUserResizeColumns="True">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
<DataGridTextColumn Header="Date" Binding="{Binding Date}"/>
</DataGrid.Columns>
</DataGrid>
(这假设包含DataGrid的元素[UserControl等]具有其 DataContext绑定到包含list
集合的对象.DataGrid派生自{{ 1}},依赖于它的ItemsControl
属性来定义它将行绑定到的集合。因此,如果ItemsSource
不是绑定到控件的DataContext的对象的属性,则可能需要在DataGrid上设置list
和DataContext={Binding list}
...)
答案 2 :(得分:5)
尝试在后面的代码中执行此操作
public diagboxclass()
{
List<object> list = new List<object>();
list = GetObjectList();
Imported.ItemsSource = null;
Imported.ItemsSource = list;
}
另外请确保您的列表有效填充,如Blindmeis所述,永远不要使用已在c#中提供函数的单词。