在我的项目中,我有:
Form1.cs
using System;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Form2 Form2 = new Form2();
public Form1()
{
InitializeComponent();
Form2.Show();
}
private void button1_Click(object sender, EventArgs e)
{
var random = new Random();
string number = random.Next(-10,10).ToString();
textBox1.Text = number;
Form2.InsertText(number);
}
}
}
字符串
Form2.cs
using System.Windows.Forms;
using System.Windows.Forms.Integration;
namespace WindowsFormsApp1
{
public partial class Form2 : Form
{
UserControlWPFVM UserControlWPFVM = new UserControlWPFVM();
ElementHost host = new ElementHost();
public Form2()
{
InitializeComponent();
UserControlWPF userControlWPF=new UserControlWPF();
host.Dock = DockStyle.Fill;
host.Child = userControlWPF;
this.Controls.Add(host);
}
public void InsertText(string text)
{
UserControlWPFVM.InsertText(text);
host.Update();
}
}
}
型
UserControlWPF.xaml
<UserControl x:Class="WindowsFormsApp1.UserControlWPF"
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:local="clr-namespace:WindowsFormsApp1"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<TextBox Text="{Binding Text1,UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</UserControl>
型
UserControlWPF.xaml.cs
using System.Windows.Controls;
namespace WindowsFormsApp1
{
public partial class UserControlWPF : UserControl
{
public UserControlWPFVM UserControlWPFVM { get; set; }
public UserControlWPF()
{
UserControlWPFVM = new UserControlWPFVM();
InitializeComponent();
DataContext = UserControlWPFVM;
}
}
}
型
UserControlWPFVM.cs
using Prism.Mvvm;
namespace WindowsFormsApp1
{
public class UserControlWPFVM : BindableBase
{
private string text1 = "333";
public string Text1
{
get { return text1; }
set { SetProperty(ref text1, value); }
}
public void InsertText(string text)
{
Text1 = text;
}
}
}
型
按下Form1中的按钮后,将生成随机数,并应插入UserControl(WPF)中的TextBox中。UserControlWPFVM.cs中的属性Text1已更新,但我看不到UserControl中TextBox的任何更改。
1条答案
按热度按时间vsdwdz231#
当我试图重现你的示例时,唯一缺少的似乎是将userControlWPF的
DataContext
设置为Model。的数据
字符串
其中,出于测试目的:
型