[英]How to get a value from a public method in another class in C#
上下文:我正在制作 WPF 應用程序。 在這種情況下,我有一個帶有用戶控件的 window 和另一個 windows ,其中在用戶控件中引入了信息。 我有三個 windows: Main,我在其中創建按鈕,數據輸入 window(此數據稍后 go 到 main 以創建按鈕,使用showDialog()==true
)和查看數據
問題:當我想從另一個 window 獲取變量到查看按鈕信息 window 時遇到問題。 這個名為 Window4 的 window 不接收變量,因此等於 null。
代碼:
//Click event of the new buttons created with data entering window's info.
void newBtn_Click(object sender, EventArgs e)
{
Window4 win4 = new Window4();
win4.Show();
}
...
var vent = new Ventanal2(); //Ventanal2 is data entering window
if (vent.ShowDialog() == true)
{
ImageBrush nuestroIcono = vent.retornoIcono();
string tituloHabilidad = vent.retornoTitulo();
string grupoHabilidad = vent.retornoGrupo();
int nivelHabilidad = vent.retornoNivel();
//The method below creates the new button. The above get the button Data from the Data Entering Window
crearBoton(tituloHabilidad, grupoHabilidad, nivelHabilidad, nuestroIcono);
}
//Data viewing window
public Window4()
{
InitializeComponent();
var vent = new Ventanal2();
ImageBrush nuestroIcono = vent.retornoIcono();
string tituloHabilidad = vent.retornoTitulo();
int nivelHabilidad = vent.retornoNivel();
}
如果我在數據查看 Window 的吸氣劑之前放置一個 showDialog() ,則輸入 Window 的數據會出現兩次,這不是我想要的。
解決方案應該是什么樣子:我想在我的數據查看 Window 中獲取數據輸入 Window(然后在我的按鈕創建窗口中)中介紹的數據。
提前感謝大家。
您應該能夠使用 windows 之間的事件來傳遞您的值。 看看這個討論的例子。
您應該嘗試將您的數據與您的視圖(窗口)分開您可以在這里做的是為您的 3 個 windows 可以訪問的所有數據設置一個 class。 然后,您可以將視圖的 dataContext 設置為數據實例 class 以便綁定可以訪問數據。 在創建 windows 時傳入您的數據實例 class 例如 ShowMyView(MyData myData) (有關更多信息,請查看 MVVM 模式。)
您可以將值存儲在變量中並將它們傳遞給Window4
:
private ImageBrush _nuestroIcono;
private string _tituloHabilidad;
private string _grupoHabilidad;
private int _nivelHabilidad;
void newBtn_Click(object sender, EventArgs e)
{
Window4 win4 = new Window4(_nuestroIcono, _tituloHabilidad, _nivelHabilidad);
win4.Show();
}
...
var vent = new Ventanal2(); //Ventanal2 is data entering window
if (vent.ShowDialog() == true)
{
_nuestroIcono = vent.retornoIcono();
_tituloHabilidad = vent.retornoTitulo();
_grupoHabilidad = vent.retornoGrupo();
_nivelHabilidad = vent.retornoNivel();
crearBoton(_tituloHabilidad, _grupoHabilidad, _nivelHabilidad, _nuestroIcono);
}
...
public Window4(ImageBrush nuestroIcono, string tituloHabilidad, int nivelHabilidad)
{
InitializeComponent();
//use the parameters...
}
作為旁注,無論您的母語如何,都不使用英文成員名稱是一種不好的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.