gpt4 book ai didi

c# - 如何在 WPF 中将值从窗口传递到用户控件

转载 作者:行者123 更新时间:2023-11-30 20:53:57 25 4
gpt4 key购买 nike

我想将一个值从 MainWindow 传递到我的 UserControl!我向 UserControl 传递了一个值,UserControl 向我显示了 MessageBox 中的值,但它没有显示 TextBox 中的值。这是我的代码:

MainWindow(将值传递给 UserControl)

try
{
GroupsItems abc = null;
if (abc == null)
{
abc = new GroupsItems();
abc.MyParent = this;
abc.passedv(e.ToString(), this);

}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}

用户控件

public partial class GroupsItems : UserControl
{
public MainWindow MyParent { get; set; }
string idd = "";
public GroupsItems()
{
InitializeComponent();
data();
}

public void passedv(string id, MainWindow mp)
{
idd = id.ToString();
MessageBox.Show(idd);
data();
}

public void data()
{
if (idd!="")
{
MessageBox.Show(idd);
texbox.Text = idd;
}
}
}

编辑(使用绑定(bind)和 INotifyProperty)

.....

   public GroupsItems()
{
InitializeComponent();
}

public void passedv()
{
textbox1.Text = Text;
}

}

public class Groupitm : INotifyPropertyChanged
{

private string _text = "";

public string Text
{
get { return _text; }
set
{
if (value != _text)
{
_text = value;
NotifyPropertyChanged();
}
}
}



public event PropertyChangedEventHandler PropertyChanged;

protected void NotifyPropertyChanged(String propertyName = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

最佳答案

这里的问题是引用。

当您在代码隐藏中创建新对象时,将创建新对象,这与您在 xaml 代码中拥有的对象不同。所以你应该使用下面的代码:

<local:GroupsItems x:Name="myGroupsItems"/>

在后面的代码中,您不必创建新对象。您应该使用在 XAML 中添加的对象:

...
myGroupsItems.MyParent = this;
myGroupsItems.passedv(e.ToString(), this);
...

Here是示例解决方案 (sampleproject)。

关于c# - 如何在 WPF 中将值从窗口传递到用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19514617/

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