我想更新我的UI使用可观察集合,但我没有发生在我的情况下,即使我试图更新它使用“编组数据到Gui线程”,即使不工作对我来说。在这里我更新了我的代码,请让我知道我错了。 XAMLObservableCollection不更新图形用户界面
<DataGrid ItemsSource="{Binding BindFiles, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectionMode="Single" CanUserSortColumns="False" x:Name="dataGrid1" BorderBrush="Transparent" Canvas.Left="1" Canvas.Top="50" Background="{Binding ElementName=gd,Path=Background}"></datgrid>
财产
ObservableCollection<ProjectTabModel> _BindFiles;
public ObservableCollection<ProjectTabModel> BindFiles
{
get
{
return _BindFiles;
}
set
{
_BindFiles = value;
RaisePropertyChanged(()=>BindFiles);
}
}
视图模型
#region BindProjectFiles
public void Bindfiletab()
{
List<ProjectTabModel> obj = ProjectTabModel.FilesBinding(GlobalProjectID);
ObservableCollection<ProjectTabModel> obsrvbl = new ObservableCollection<ProjectTabModel>(obj);
if (obsrvbl.Count > 0)
{
BindFiles.Clear();
foreach (var item in obsrvbl)
{
BindFiles.Add(item);
}
}
else
{
NoFileFound = "No File found";
}
}
private class DragOverEvent : ProjectTabViewModel, ICommand
{
public event EventHandler CanExecuteChanged;
public void Execute(object sender)
{
GalaSoft.MvvmLight.Threading.DispatcherHelper.CheckBeginInvokeOnUI(() =>
{
//my code stuff here
}
});
}
你的代码是一团糟。你有一个视图模型类,它也是一个'ICommand',但被命名为'... Event'。您正在处理视图模型中的'LblMessageForFiles' UI控件,该控件对MVVM的效率为100%,因此您清楚*不知道MVVM。我建议您在继续项目之前回头阅读并学习WPF和MVVM。你错过了太多的知识来帮助你在这里......至少在你问这里问题之前,你需要学习基础知识。 – Sheridan
@Sheridan根据我的研究,如果我们想要做什么与视图我们使它的属性,并在视图中绑定它也是这里我的ahev属性“LblMessageForFiles”,我正在使用。但问题,我是facig是在添加任何新的条目UI之后不会刷新。还有什么不是没有理解的。 –
*你还有什么不了解* ...我???你在开玩笑? 'System.Windows.Visibility enum'是UI相关的,并且* not *属于你的视图模型。为什么我假设'LblMessageForFiles'是一个UI元素?因为一些奇怪的原因,你再给名称添加一个'Lbl'前缀......你的代码就是一团糟。 – Sheridan