gpt4 book ai didi

c# - MVVM丢失,尝试将M连接到VM到V

转载 作者:行者123 更新时间:2023-12-03 10:56:06 24 4
gpt4 key购买 nike

所以这就是我想要做的。我想将字符串techName从模型传递到 View ...,但我不了解如何执行此操作。我可以从ViewModel到 View 完成此操作,但我希望数据位于Model中并由ViewModel提取并传递给View。以便可以跨多个 View 使用数据。话是这么说
主窗口:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void DefaultViewClicked(object sender, RoutedEventArgs e)
{
DataContext = new DefaultViewModel();
}

private void NewCallClicked(object sender, RoutedEventArgs e)
{
DataContext = new NewCallViewModel();
}
}
看法:
Text="{Binding model.TechName}
ViewModel:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using callFlow.Models;


namespace callFlow.ViewModels
{
public class DefaultViewModel
{
private ObservableCollection<DataModel> model = new ObservableCollection<DataModel>();

public DefaultViewModel() { }

private DataModel _selectedModel;
public DataModel SelectedModel
{
get { return _selectedModel ?? (_selectedModel = new SelectedModel()); }
set { _selectedModel = value; }
}

public void changeSelectedModel(DataModel newSelectedModel)
{
SelectedModel.TechName = newSelectedModel.TechName;
}
}
}
模型:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Text;
using System.Drawing;

namespace callFlow.Models
{
public class DataModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;

private string techName ="this is a test";

public DataModel()
{

}

public string TechName
{
get { return techName; }
set { techName = value; OnPropertyChanged(); }
}

protected void OnPropertyChanged([CallerMemberName] string techName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(techName));
}
}
}

最佳答案

您的Datacontext类DefaultViewModel没有任何model属性。
因此,您必须用以下代码替换XAML:

Text="{Binding SelectedModel.TechName}

关于c# - MVVM丢失,尝试将M连接到VM到V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63303594/

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