C# 检查是否通过绑定或分配填充了DataGrid ItemSource
有没有办法(在代码中)确定Datagrid的ItemSource是通过绑定设置的,还是有赋值 绑定:C# 检查是否通过绑定或分配填充了DataGrid ItemSource,c#,wpf,data-binding,datagrid,C#,Wpf,Data Binding,Datagrid,有没有办法(在代码中)确定Datagrid的ItemSource是通过绑定设置的,还是有赋值 绑定: <DataGrid x:Name="MyGrid" ItemsSource="{Binding Foo}"/> 任务: <DataGrid x:Name="MyGrid" /> MyGrid.ItemsSource=新列表{1,2,3}; [[1]: 此图显示了如何得出结论,即网格正在填充所需的值。调试器中的MyGird.Items.Results视图值也会显
<DataGrid x:Name="MyGrid" ItemsSource="{Binding Foo}"/>
任务:
<DataGrid x:Name="MyGrid" />
MyGrid.ItemsSource=新列表{1,2,3};
[[1]:
此图显示了如何得出结论,即网格正在填充所需的值。调试器中的MyGird.Items.Results视图值也会显示实际值。在您的情况下,Foo变量应该是int的列表。下面给出了绑定Foo的正确方法
在代码隐藏中:
public List<int> Foo { get; set; }
public MainWindow()
{
InitializeComponent();
Foo = new List<int>() { 1, 2, 3 };
MyGrid.ItemsSource = Foo;
}
公共列表Foo{get;set;}
公共主窗口()
{
初始化组件();
Foo=新列表(){1,2,3};
MyGrid.ItemsSource=Foo;
}
在XAML中
<Grid>
<DataGrid x:Name="MyGrid">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
有一种框架方法可以检测绑定: 返回与给定属性关联的BindingExpression对象,如果不存在,则返回null
<Grid>
<DataGrid x:Name="MyGrid">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
var binding = BindingOperations.GetBindingExpression(MyGrid, DataGrid.ItemsSourceProperty);
string result = (binding == null) ? "assignment" : "binding";