gpt4 book ai didi

c# - 在多个 View 之间共享 ViewModel

转载 作者:行者123 更新时间:2023-12-03 10:28:44 29 4
gpt4 key购买 nike

我当然希望这个问题很容易回答,但已经好几天了,我还没有弄清楚如何在 UserControls 之间共享数据。

下面的页面有两个选项卡,并引用了它们的来源。它还有一个标记为 Start 的按钮,用于访问 ViewModel 中的命令。

我遇到的问题是数据实际上在选项卡中。我将它们设置为使用相同的 ViewModel,并且它们每个都创建自己的 ViewModel 实例,因此数据永远不会出现在“开始”按钮上。我希望从那以后。

这是一个相当简单的程序,我真的认为不需要 3 个单独的 ViewModel,它们只包含单个元素,但也许这就是我需要做的。总而言之,当我点击开始按钮时,我仍然需要从所有东西中收集所有数据并将其提交给外部实体。

如果这是一个以前被问过的问题,我很抱歉,但我对 C# 比较陌生,所以我不完全确定我在问什么。提前致谢!

<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mui="http://firstfloorsoftware.com/ModernUI"
x:Class="DeployWiz.Pages.Config"
mc:Ignorable="d"
xmlns:local="clr-namespace:DeployWiz.ViewModel"
d:DesignHeight="356.978" d:DesignWidth="333.582">
<Grid Style="{StaticResource ContentRoot}" Margin="16,28,16,5" >
<Grid.DataContext>
<local:ComputerViewModel/>
</Grid.DataContext>
<mui:ModernTab x:Name="tabList" Layout="List" SelectedSource="/Views/ComputerView.xaml" Margin="0,0,0,40">
<mui:ModernTab.Links>
<mui:Link DisplayName="Settings" Source="/Views/ComputerView.xaml" />
<mui:Link DisplayName="Applications" Source="/Views/ApplicationView.xaml" />
</mui:ModernTab.Links>
</mui:ModernTab>
<Button Content="Start" HorizontalAlignment="Center" Margin="0,0,0,5" VerticalAlignment="Bottom" Width="75" Command="{Binding Path=StartTask}"/>
</Grid>
</UserControl>

最佳答案

你在使用任何 MVVM 框架吗?

这取决于,有不同的方法,多个 View 访问一个 View 模型很常见。

一,如果已经实例化

this.DataContext = ViewModelName();
(后端代码中的数据上下文绑定(bind))

MVVM Light 工具包将在 ViewModel Locator 中为您执行此操作,我相信是的

您还可以阅读此帖子的答案以在 App.xaml.cs 文件中制作静态 View 模型
单例 One ViewModel and multiple views

关于c# - 在多个 View 之间共享 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010095/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com