當按鈕單擊(MVVM模型)時,我想刷新我的數據網格。在我看來,沒有關於視圖的參考。任何人都可以解釋。如何使用MVVM刷新我的DataGrid
我想按鈕點擊時使用DataGrid.Refresh()方法。我如何在MVVM模型中使用它。
當按鈕單擊(MVVM模型)時,我想刷新我的數據網格。在我看來,沒有關於視圖的參考。任何人都可以解釋。如何使用MVVM刷新我的DataGrid
我想按鈕點擊時使用DataGrid.Refresh()方法。我如何在MVVM模型中使用它。
將您的數據項目設置爲ObservableCollection
並將dataGrid
的itemSource
與ObservableCollection
綁定。 Datagrid
將被刷新,如果條目將被添加/刪除或移動到這個集合。
我想按下按鈕時使用DataGrid.Refresh()方法。我如何在MVVM模型中使用它。 –
您只需創建按鈕命令並將該方法綁定到該命令。在該方法中,刷新你的收藏。 –
您需要將您的DataGrid數據綁定到一些收集視圖模型:
<DataGrid ItemsSource="{Binding Items}">...</DataGrid>
然後,如果你的Items
屬性是ObservableCollection
類型,數據網格將自動刷新,當項目被添加或從項目集合中刪除。無需調用DataGrid.Refresh()
- 這就是爲什麼MVVM使事情變得更簡單。當東西在視圖模型發生
private void Refresh()
{
//in this case, items doesn't have to be ObservableCollection, but any collection type
Items = new ObservableCollection<SomeClass> {
new SomeClass(),
new SomeClass()
};
OnPropertyChanged("Items");
}
如果你真的需要訪問的UIElement,然後做從代碼隱藏,(使用視圖模型事件:
public class MainWindowViewModel : ViewModelBase
{
public MainWindowViewModel()
{
Items = new ObservableCollection<SomeClass>();
//add some test data
Items.Add(new SomeClass());
Items.Add(new SomeClass());
RefreshCommand = new DelegateCommand(Refresh);
}
public DelegateCommand RefreshCommand { get private set; }
public ObservableCollection<SomeClass> Items { get; private set; }
private void Refresh()
{
Items.Clear();
//add actual items
Items.Add(new SomeClass());
Items.Add(new SomeClass());
}
}
或者,您可以卡斯特創建項目集合的新實例通知視圖,發生了一些事情)。在下面的示例中,我使用PropertyChanged事件來通知視圖,viewmodel中的某些內容已更改,並且視圖負責刷新viewmodel。
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
((MainWindowViewModel) DataContext).PropertyChanged += ViewModel_PropertyChanged;
}
void ViewModel_PropertyChanged(object s, PropertyChangedEventArgs e)
{
if (e.PropertyName == "Items")
{
MyDataGrid.Refresh();
}
}
我正在使用綁定到DataGrid的DataTable。如果我將列添加到DataTable,DataGrid不會更新UI。爲了強制它通過ViewModel完成,我首先將DataTable屬性設置爲null(暫時保存),然後將其設置回原始的DataTable。這對我有效。
http://stackoverflow.com/questions/5285377/wpf-mvvm-inotifypropertychanged-implementation-model-or-viewmodel – Dani
首先在mvvm沒有沒有按鈕點擊,第二我想刷新我的DataGrid。 –