wpf 我如何根据viewmodel中的方法更新UI(视图),同时仍然遵循MVVM [重复]

ttisahbt  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(123)

此问题已在此处有答案

How do I bind a TabControl to a collection of ViewModels?(4个答案)
上个月关门了。
我对WPF、C#和MVVM结构还很陌生,所以请原谅我的无知。我只是试图在打开文件时创建一个新选项卡。我的逻辑都在ViewModel中,包括打开文件,这是通过XAML文件中的绑定调用的,所以我很困惑,一旦打开一个文件,我应该如何让视图创建一个新的选项卡,而不需要两者之间的通信。也许我遗漏了什么,也许我的方法完全不正确,我不确定。
我最近发现了一种方法,可以将2个命令绑定到1个事件,但是如果每次有人单击“打开”时都创建一个标签,这将是有问题的,特别是如果用户取消。我已经研究过让视图和ViewModel进行通信,因为有很多方法可以做到这一点,但我正在尽一切可能避免这种情况,并完全打破MVVM的规则。

rsl1atfo

rsl1atfo1#

有很多方法:

  1. TabControl支持ItemsSource,您可以简单地从ViewModel向ObservableCollection添加新元素,该元素将立即更新。示例:How do I bind a TabControl to a collection of ViewModels?
    1.如果ViewModel中的属性支持INotifyPropertyChanged,则可以更新它。
[Reactive] // ReactiveUI.Fody
public string IsTabVisible { get; private set; }
<TabItem Visibility={Binding IsTabVisible, Converter={StaticResource BoolToVisibilityConverter} />
</TabItem>

1.一个复杂但好的方法,使用Prism(和部分ReactiveUI),你可以导航到你的标签。
如果你是初学者,我建议你使用第一种方法。

相关问题