【发布时间】:2013-05-29 17:36:04
【问题描述】:
我的 MVVM 应用程序有一个小问题。
我在视图模型中有一个修改集合的函数。此集合绑定到视图以显示数据网格。当用户点击按钮时,该函数会修改集合,但可能需要几分钟时间,并且视图不会刷新。
我的问题是如何执行此功能以实时刷新视图?
在另一个程序中,我使用了调度程序,但它位于视图后面的代码中,没有绑定。
谢谢
编辑:
型号:
public class Composants : INotifyPropertyChanged
{
private string _nom;
public string Nom
{
get { return _nom; }
set { _nom = value; OnPropertyChanged("Nom"); }
}
}
视图模型:
public class PageSynchroViewModel : INotifyPropertyChanged
{
public void SynchroniserComposants()
{
foreach (var comp in _selectedVersion.ListeComposants)
{
comp.Nom = "";
}
}
查看(我没有放所有代码):
<Page x:Class="Centre_de_synchronisation.Vues.PageSynchro"
[...]
xmlns:app="clr-namespace:Centre_de_synchronisation.Classes" mc:Ignorable="d"
d:DesignHeight="531" d:DesignWidth="778"
Title="PageSynchro" Background="{x:Null}">
<Canvas>
[...]
<DataGrid Name="GridComposants" Style="{StaticResource DatagridStyle}" ItemsSource="{Binding ListeComposants}" AutoGenerateColumns="False" Canvas.Left="12" Canvas.Top="201" Height="285" Width="754" >
<DataGrid.Columns>
<DataGridTextColumn
Header="Nom"
Binding="{Binding Nom}"
Width="150"
IsReadOnly="True"/>
[...]
</DataGrid>
<Button Name="BoutonSynchro" Style="{StaticResource MessageBoxButtonStyle}" Content="Synchroniser" Height="27" Width="107" Command="{Binding BoutonSynchro}" CommandParameter="GridComposants" Visibility="{Binding Etat, Converter={StaticResource VisibilityConverter}}"/>
</Canvas>
【问题讨论】:
-
几分钟?你能发布你的代码吗?
-
几秒钟,但用户在单击“同步”按钮时没有任何信息。我在 MainWindow 上有一个小的加载指示器。当用户单击同步按钮时,PageSynchroViewModel 会向 MainWindow(带有 mvvm 灯)发送一条消息以显示加载指示器,但它不显示。
标签: wpf mvvm mvvm-light