Модели:
ViewModels:
Просмотров: 1024 * *
Это чистый шаблон MVVM, без кода.
TabModel вызывает EventHandler - RefreshRequested после закрытия документа Word. MainViewModel содержит подписчика. Метод Refresh () in MainViewModel работает нормально. Метод срабатывает после закрытия документа. Теперь я хотел бы обновить WebBrowser в DisplayTabView.xaml из MainViewModel . Я борюсь с этим уже слишком много часов. Не могли бы вы указать мне в правильном направлении. Спасибо.
TabModel.cs
public abstract class TabModel : ITabModel, INotifyPropertyChanged
{
public async void HiddenFileExists()
{
(...)
OnRefreshRequested();
}
public delegate void RefreshRequestedEventHandler(object source, EventArgs args);
public event RefreshRequestedEventHandler RefreshRequested;
public virtual void OnRefreshRequested()
{
RefreshRequested?.Invoke(this, EventArgs.Empty);
}
}
MainViewModel.cs
public class MainViewModel : INotifyPropertyChanged
{
private readonly ObservableCollection<ITabModel> tabs;
private void DisplayFileTab(object parameter)
{
(...)
tabs.ElementAt(TabIndex).RefreshRequested += Refresh;
}
public void Refresh(object source, EventArgs args)
{
MessageBox.Show("Refresh");
}
DisplayTabView.xaml
<Grid>
<WebBrowser h:WebBrowserExtensions.BindableSource="{Binding FileUrl}" Tag="{Binding AcceptedKeywordsArray}" h:WebBrowserExtensions.BindableLoaded="{Binding}" />
</Grid>
MainWindow.xaml
<Grid>
<DockPanel>
<TabControl Name="tabControl" ItemsSource="{Binding Tabs}" SelectedIndex="{Binding TabIndex}">
<TabControl.Resources>
<DataTemplate DataType="{x:Type m:DisplayTabViewModel}">
<v:DisplayTabView x:Name="DisplayTab"/>
</DataTemplate>
</TabControl.Resources>
<TabControl.ItemTemplate>
<DataTemplate DataType="{x:Type m:ITabModel}">
<Grid>
(...)
</Grid>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
</DockPanel>
</Grid>