У меня есть сетка данных, которая должна представлять два типа набора данных в два разных времени события.
При загрузке формы - сетка данных показывает modelclasswithcombobox (работает нормально)
при нажатии кнопки - сетка данных показывает модель для других пользователей (проблема здесь в том, что она показывает пустую сетку данных, хотя данные заполнены в сборе)
XAML:
<DataGrid Height="150" x:Name="datagrid1" AutoGenerateColumns="True" CanUserAddRows="False" Width="467" Margin="299,-135,40,9" HorizontalAlignment="Left">
<DataGrid.Style>
<Style TargetType="{x:Type DataGrid}">
<Setter Property="ItemsSource" Value="{Binding Populatedatagridwithobservablecollection.modelclasswithcombobox}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Isauditorsearch}" Value="True">
<Setter Property="ItemsSource" Value="{Binding
modelforseperateusers,
diag:PresentationTraceSources.TraceLevel=High,Mode=TwoWay }"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Style>
</DataGrid>
код:
public interface INofificationActionfordatagrid {
ObservableCollection < datagridmodel > modelclasswithcombobox {
get;
set;
}
void getdatausinglinq();
}
public class PopulateDatagrid: INofificationActionfordatagrid {
public ObservableCollection < datagridmodel > modelclasswithcombobox {
get;
set;
}
public void getdatausinglinq() {
using(Operations_Productivity_ToolEntities context = new
Operations_Productivity_ToolEntities()) {
var a1 = from t1 in context.Test_ImportedAuditdata
where t1.status == "Pending"
select t1;
if (modelclasswithcombobox == null) modelclasswithcombobox = new
ObservableCollection < datagridmodel > ();
foreach(var a in a1) {
modelclasswithcombobox.Add(new datagridmodel {
AuditId = a.AuditId.ToString(),
Claimnumber = a.ClaimNumber.ToString(),
UserName = a.username,
CreateDate = a.Created_Date.ToString(),
ID = a.id.ToString(),
Status = a.status
});
}
context.SaveChanges();
}
}
}
public class ViewModel {
public ObservableCollection < datagridmodelforSeperateUsers >
modelforseperateusers {
get;
set;
}
INofificationActionfordatagrid
_populatedatagridwithobservablecollection = new PopulateDatagrid();
public ViewModel() {
Isauditorsearch = false;
_populatedatagridwithobservablecollection.getdatausinglinq();
ReassignusersSeperately = new RelayCommand(o =
>Filterbind(Currentcomboboxitem3));
}
public INofificationActionfordatagrid
Populatedatagridwithobservablecollection {
get {
return _populatedatagridwithobservablecollection;
}
set {
if (value != _populatedatagridwithobservablecollection) {
_populatedatagridwithobservablecollection = value;
OnPropertyChanged("Populatedatagridwithobservablecollection");
}
}
}
public void Filterbind(string an) {
Isauditorsearch = true;
using(Operations_Productivity_ToolEntities context = new
Operations_Productivity_ToolEntities()) {
var a1 = from t1 in context.Test_ImportedAuditdata
where t1.username == an
select t1;
try {
if (modelforseperateusers == null) modelforseperateusers = new
ObservableCollection < datagridmodelforSeperateUsers > ();
foreach(var a in a1) {
modelforseperateusers.Add(new
datagridmodelforSeperateUsers {
toUpdate = false,
AuditId = a.AuditId.ToString(),
Claimnumber = a.ClaimNumber.ToString(),
UserName = a.username,
CreateDate = a.Created_Date.ToString(),
ID = a.id.ToString(),
Status = a.status
});
}
context.SaveChanges();
} catch(Exception e) {
MessageBox.Show(e.ToString());
}
}
}
}
Проблема: Наблюдаемая модель коллекции для пользователей-операторов заполняется данными в модели представления, но она не связана с xaml.
При отладкеxaml:
Warning: 56 : Created BindingExpression (hash=36729282) for Binding (hash=25749409)
System.Windows.Data Warning: 58 : Path: 'modelforseperateusers'
System.Windows.Data Warning: 61 : BindingExpression (hash=36729282): Default update trigger resolved to PropertyChanged
System.Windows.Data Warning: 62 : BindingExpression (hash=36729282): Attach to System.Windows.Controls.DataGrid.ItemsSource (hash=55797203)
System.Windows.Data Warning: 67 : BindingExpression (hash=36729282): Resolving source
System.Windows.Data Warning: 70 : BindingExpression (hash=36729282): Found data context element: DataGrid (hash=55797203) (OK)
System.Windows.Data Warning: 78 : BindingExpression (hash=36729282): Activate with root item ViewModel (hash=38471091)
System.Windows.Data Warning: 107 : BindingExpression (hash=36729282): At level 0 using cached accessor for ViewModel.modelforseperateusers: RuntimePropertyInfo(modelforseperateusers)
System.Windows.Data Warning: 104 : BindingExpression (hash=36729282): Replace item at level 0 with ViewModel (hash=38471091), using accessor RuntimePropertyInfo(modelforseperateusers)
System.Windows.Data Warning: 101 : BindingExpression (hash=36729282): GetValue at level 0 from ViewModel (hash=38471091) using RuntimePropertyInfo(modelforseperateusers): <null>
System.Windows.Data Warning: 80 : BindingExpression (hash=36729282): TransferValue - got raw value <null>
System.Windows.Data Warning: 84 : BindingExpression (hash=36729282): TransferValue - implicit converter produced <null>
System.Windows.Data Warning: 89 : BindingExpression (hash=36729282): TransferValue - using final value <null>
Увидев отладочную информацию, мы видим, что коллекция предоставляет нулевое значение, и я считаю, что это причина пустой сетки данных.Пожалуйста, предоставьте информацию по проблеме.