[英]How to access WPF MainWindows Controls from another class in the same namespace?
我有這樣的 MainWindows.cs:
namespace LiniaProdukcyjna
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
我有 CSilnik class:
namespace LiniaProdukcyjna
{
class CSilnik
{
ICollection<CLinia> linie;
public void permut(int k, int n, int[] nums)
{
int i, j, tmp;
/* when k > n we are done and should print */
if (k <= n)
{
for (i = k; i <= n; i++)
{
tmp = nums[i];
for (j = i; j > k; j--)
{
nums[j] = nums[j - 1];
}
nums[k] = tmp;
/* recurse on k+1 to n */
permut(k + 1, n, nums);
for (j = k; j < i; j++)
{
nums[j] = nums[j + 1];
}
nums[i] = tmp;
}
}
else
{
linie.Add(new CLinia(nums));
// here i want to do something with ListView in MainWindow
}
}
}
}
和 Clinia class:
namespace LiniaProdukcyjna
{
class CLinia
{
int koszt;
int[] kolejnosc;
public CLinia(int[] inKolejnosc)
{
kolejnosc = inKolejnosc;
}
}
}
我在 MainWindow 中有 ListView 控件。 我想在 MainWindow 中修改 ListView “lista”,但我無法訪問它們。 我必須做什么才能訪問以下控件:lista.Items.Add?
在類之間傳遞 UI 控件實際上並不是一個好主意。
您只能在控制 window 的 class 中編輯控件(例如列表視圖、文本框等)。
但是,您可以制作另一個部分 class,它只會拆分您的主 Window class。
如果你曾經將一些東西傳遞給另一個 class,你可以這樣傳遞它:
Public SomeClass(string text)
{
}
//Create an object of 'SomeClass'
SomeClass someClass = new SomeClass(textBox.text);
或者您可以通過方法傳遞用戶控件屬性。
希望這可以幫助,
您可以做的一件事是創建SomeClass
的構造函數,您希望在其中訪問listview
並在創建SomeClass
實例時在constructor
中傳遞listview
的引用。 通過這種方式,您將能夠訪問任何listview
中的列表class
例如
在 MainWindow.xaml.cs 文件中
public MainWindow()
{
InitializeComponent();
SomeClass someClass = new SomeClass(listView);
}
在您要訪問列表視圖的其他一些 class
public SomeClass
{
ListView _ListViewRef;
public SomeClass(ListView listView)
{
_LisViewRef = listView;
}
SomeMethod()
{
//here you can play with listview
}
}
在 MainWindow.xaml 您可以創建 static 您要訪問的控件實例;
public static StackPanel stackPanel;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// set stackpanel for logging
stackPanel = stackPanel1;
}
然后您可以從 class 外部訪問它;
MainWindow.stackPanel
在 Form2 中創建事件處理程序並在 Form1 中訂閱
public event EventHandler<UpdateListBoxEventArgs> UpdateListBox;
converter.UpdateListBox +=
new EventHandler<CVEConverter.UpdateListBoxEventArgs>(AddToListBox);
public class UpdateListBoxEventArgs : EventArgs
{
private readonly string lbTerminalText;
public UpdateListBoxEventArgs(string lbText)
{
this.lbTerminalText = lbText;
}
public string lbTerminalWindowText
{
get { return lbTerminalText; }
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.