我想更新我的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