我正在使用MVVM模式。 我想使用datagrid的refresh方法。 我也经历了以下链接,其有用: How to refresh a WPF DataGrid?
但我的问题是:我在viewmodel中创建了一个datagrid对象,如下所示:
public DataGrid ActiveGrid=new DataGrid();
public void RefreshGrid()
{
View.Dispatcher.Invoke((Action)(() =>
ActiveGrid.Items.Refresh()
));
}
我的datagrid的itemsource已绑定到另一个集合,例如
<DataGrid x:Name="ActiveGrid"
IsReadOnly="True"
ItemsSource="{Binding ActiveCallCollection}"
SelectedItem="{Binding ActiveGridCollection,
Mode=TwoWay}" SelectionMode="Single"
Visibility="{Binding IsActiveCallsSelected,
Converter={StaticResource BooleanToVisibilityConverter}}"
d:LayoutOverrides="Height">
如何将ActiveGrid绑定到xaml数据网格。
答案 0 :(得分:0)
如果你的ViewModel中有一个DataGrid对象,那么它就不再是MVVM了。你最好问一下你想要达到的目标,所以我们可以帮助你。
如果你绑定到OberservableCollection - 你应该这个一次!然后,所有更改(添加,删除)都会反映在您的数据网格中。
请在您创建/更改集合的位置发布代码
答案 1 :(得分:0)
如果使用MVVM设计模式,则视图模型不应具有DataGrid
相反,您的View
应该有DataGrid
,并且应该绑定到ViewModel中的ObservableCollection
。
请确保绑定 ItemsSource
属性,而不是设置,否则对ObservableCollection
的更改可能无法在UI中自动更新
<DataGrid x:Name="ActiveGrid"
IsReadOnly="True"
ItemsSource="{Binding ActiveCallCollection}"
SelectedItem="{Binding Selected ActiveCall}"
SelectionMode="Single"
Visibility="{Binding IsActiveCallsSelected,
Converter={StaticResource BooleanToVisibilityConverter}}"
d:LayoutOverrides="Height">