現在、WPFを使用してMIPSエミュレータを作成しようとしています。WPFで名前を使用してcodebehindで作成されたコントロールを見つける方法
registerListと呼ばれるスタックパネルコントロールでは、私は2つのテキストブロック(R0〜R31という名前の2番目のテキストブロック)を含む32個のスタックパネル(C0〜C31)を作成しました。
Iは、最初は、[i]は正しくdisplayRegisters()Iが作成方法を用いProcesor.RegisterBank.Registersに含まれる32個のレジスタを表示します。
Procesor.RegisterBankというクラスに含まれる値で、2番目のテキストブロックの32個の値をすべて更新する方法を作成しました。
ただし、この方法を使用しようとすると、プロジェクトを開始するときにGUIページが表示されません。
私は何時間もこれに固執しており、スタックパネルをコードで作成しないことをほとんど考慮しています。あなたが新しく追加されたControl
が親コントロールのNameScope
の一部とすることができるように、RegisterName()を使用する必要が
おかげ
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);
}
}
}
:
は、あなたの
displayRegister()
方法で最後に次の行を追加します。ほぼ。あなたはそれを正しくやっているとほとんど考えましたが、それは簡単すぎます。 winformsを使用するか、WPFを適切に使用することをお勧めします。 winformsとしてWPFを使用しようとすると、苦痛に終わります。 –