我创建了一个WPF窗口,根据用户对日期的选择来绑定Datagrid中的数据.BY默认加载特定日期的工作正常。但是当日期改变时,网格显示空行。但我使用的可观察集合有数据。可观察集合是DataTable类型。
注意:我没有记录时设置itemsource = null,因为我根据单选按钮检查为2个不同的表使用相同的网格。
我在XAML中将公共变量设置为Binding变量,使用了INOtifyChanged接口。
我的问题是,当同一个集合重新加载时,Datagrid无法绑定并显示空行但生成列。当前一次尝试将itemsource设置为null时,当前加载也无法加载列。
我面临的任何一般情况,?请帮忙
我的代码:
private ObservableCollection<DataTable> custInfoCol = new ObservableCollection<DataTable>();
public event PropertyChangedEventHandler PropertyChanged = delegate { };
private DataTable _CustInfo;
public DataTable CustInfo
{
get { return _CustInfo; }
set
{
_CustInfo = value;
PropertyChanged(this, new PropertyChangedEventArgs("CustInfo"));
}
}
private void rbPrev_Checked(object sender, RoutedEventArgs e)
{
custInfoCol.Clear();
custInfoCol.Add(CustInfo = showcustomer(cid));
}
答案 0 :(得分:0)
听起来您可能需要更改绑定中的UpdateSourceTrigger:
Height="{Binding Height, ElementName=Day, UpdateSourceTrigger=PropertyChanged}"
之前我的默认行为有问题,所以现在我只是每次都输入它。
答案 1 :(得分:0)
根据您在评论中提供的这段代码:
<DataGrid ItemsSource="{Binding custInfo,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
DataContext="{Binding RelativeSource={RelativeSource AncestorType=Window}}"
我认为Xaml中存在拼写错误。您应该将... Binding CustInfo...
与资本 C 一起使用。
当然,如果AutoGenerateColumns
为真,那我猜这不是问题,因为你写了
Datagrid无法绑定并显示空行但生成列
Binding的工作原理。因此,您需要检查showcustomer(cid)
并确保其中包含所需的DataRow
。
答案 2 :(得分:0)
我解决了这个非常简单的问题。我已经将datatable实例创建为全局,并在加载executereader()方法之前将其更改为local。它解决了问题。