我目前正在嘗試使用WPF創建MIPS模擬器。如何在WPF中使用名稱查找代碼隱藏創建的控件
在稱爲registerList的堆棧面板控件中;我創建了32個堆棧面板(名爲C0到C31),每個面板包含2個文本塊(第二個文本塊名爲R0到R31)。
我最初顯示包含在Procesor.RegisterBank.Registers [I]正確使用displayRegisters的32個寄存器()方法我創建。
我做了一個方法來更新第二個文本塊的所有32個值,這個值包含在一個名爲Procesor.RegisterBank的類中。
但是,當試圖使用此方法時,GUI頁面在我啓動項目時不會顯示。
我一直堅持這幾個小時,幾乎考慮不通過代碼創建堆棧面板。
感謝
public partial class MainWindow : Window
{
MRA.MRA Procesor = new MRA.MRA();
public MainWindow()
{
InitializeComponent();
displayRegisters();
Procesor.RegisterBank.registers[1] = 69;
updateRegisters();
}
public void updateRegisters()
{
for (int i = 0; i < Procesor.RegisterBank.registers.Length; i++)
{
var register = (StackPanel)registerList.FindName("C"+i.ToString());
var content = (TextBlock)register.FindName("R"+i.ToString());
content.Text= Procesor.RegisterBank.registers[i].ToString();
}
}
public void displayRegisters()
{
for (int i = 0; i < Procesor.RegisterBank.registers.Length; i++)
{
var register = new StackPanel { Orientation = Orientation.Horizontal, Background = Brushes.White, Margin = new Thickness(6, 6, 6, 6), MinHeight = 25, Name = "C" + i.ToString() };
var registerName = new TextBlock { Text = "R"+i.ToString(), FontSize = 16, MinWidth = 30, Background = Brushes.DarkGray, Foreground = Brushes.White};
var registerValue = new TextBlock { Text = Procesor.RegisterBank.registers[i].ToString(), FontSize = 16, MinWidth = 100, HorizontalAlignment = HorizontalAlignment.Right, Name="R"+i.ToString()};
register.Children.Add(registerName);
register.Children.Add(registerValue);
registerList.Children.Add(register);
}
}
}
「幾乎不考慮通過創建代碼堆棧面板。」幾乎。你幾乎認爲這樣做是對的,但這太容易了。我建議你要麼使用winforms,要麼正確使用WPF。嘗試使用WPF作爲winforms在痛苦中結束。 –