C# 在MVVM模式中设置datagridview列的tooltiptext

C# 在MVVM模式中设置datagridview列的tooltiptext,c#,.net,winforms,mvvm,C#,.net,Winforms,Mvvm,我有一个Winforms项目,在那里我追求MVVM模式。我想在某个列上显示tooltiptext。这样做的技术可能性是什么 模型 公共类AssemblyModel:INotifyPropertyChanged { 公共事件属性更改事件处理程序属性更改; 私有void NotifyPropertyChanged([CallerMemberName]字符串propertyName=”“) { PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(p

我有一个Winforms项目,在那里我追求MVVM模式。我想在某个列上显示tooltiptext。这样做的技术可能性是什么

模型
公共类AssemblyModel:INotifyPropertyChanged
{
公共事件属性更改事件处理程序属性更改;
私有void NotifyPropertyChanged([CallerMemberName]字符串propertyName=”“)
{
PropertyChanged?.Invoke(这是新的PropertyChangedEventArgs(propertyName));
}
[可浏览(错误)]
public int Primarykey{get;set;}
[显示名称(“Omschrijving”)]
[只读(正确)]
公共字符串说明{get;set;}
[可浏览(错误)]
公共字符串OutsourcedDescription{get;set;}//ToolTipText
[显示名称(“Heeft UBW”)]
[只读(正确)]
公共bool{get;set;}//此列上显示的ToolTipText
}
视图模型
公共类AssemblyViewModel
{
公共装配视图模型(int-recordID)
{
RecordID=RecordID;
Assemblies=DataAcces.Assemblies(RecordID);
}
public int RecordID{get;}
公共绑定列表程序集{get;}
}
景色 其中,我将BindingList(程序集)作为数据源绑定到DataGridView

public分部类AssemblyView:表单
{
私有只读AssemblyViewModel视图模型;
公共装配视图(装配视图模型视图模型)
{
初始化组件();
this.viewmodel=viewmodel;
datagrid.DataSource=viewmodel.Assemblies;
}
}
程序初始化
[STAThread]
静态void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AssemblyViewModel viewmodel=新的AssemblyViewModel(22990);
viewmodel.UserInputRequested+=viewmodel\u UserInputRequested;
运行(新的AssemblyView(viewmodel));
}

现在,我想在用户将鼠标悬停在
列上时显示ToolTipText。如何根据MVVM原则实现这一点

  • 当我让视图设置ToolTipText时,视图决定使用哪个参数,从而打破了MVVM原则
  • 我尝试将
    ToolTipText
    属性添加到模型中,但没有效果(也就是说,什么都没有发生/显示)(视图应该在哪个列上显示ToolTipText)

  • 是否可以在模型中添加另一个属性,“告诉”视图是否有关于参数的更多信息(然后让视图决定如何查看它,是否使用ToolTipText)。

    在尝试添加到视图之前,必须用数据填充viewmodel。我从发布的代码中怀疑表单是在视图具有数据之前构造的。您需要在表单中创建一个方法,以便在表单启动后添加视图。数据正确显示在datagridview中。在初始化viewmodel时检索数据,即创建视图之前发生的情况。我也将发布该代码。将用于选项的属性添加到模型中。然后在模型的构造函数中设置选项。您当前正在设置ID:AssemblyViewModel(int-recordID)。只需向构造函数中添加其他参数。@jdweng您是指?中的选项吗?不。这太复杂了。只需向以下内容添加另一个参数:public AssemblyViewModel(int-recordID)