WPF未找到用于注册名称的名称范围
我试图创建一个“调试”文本块,从某种意义上说,它就像一个MessageBox,但不像它那样中断。相反,它就像一个状态栏,默默地给出输出信息。这是我目前的代码WPF未找到用于注册名称的名称范围,wpf,Wpf,我试图创建一个“调试”文本块,从某种意义上说,它就像一个MessageBox,但不像它那样中断。相反,它就像一个状态栏,默默地给出输出信息。这是我目前的代码 private void Debug(string data) { TextBlock tb = componentContainer.FindName("Debugbox") as TextBlock; if (tb == null) { MessageBox
private void Debug(string data)
{
TextBlock tb = componentContainer.FindName("Debugbox") as TextBlock;
if (tb == null)
{
MessageBox.Show("yo");
tb = new TextBlock() {Foreground = Brushes.Orange };
if (NameScope.GetNameScope(tb) == null)
NameScope.SetNameScope(tb, new NameScope());
componentContainer.RegisterName("Debugbox", tb);
componentContainer.Children.Add(tb);
}
tb.Text = data;
}
然而,它给了我“找不到注册名称的名称镜”。我试着换了
componentContainer.RegisterName("Debugbox", tb);
与
而且效果很好。但是如果这个函数被多次使用,TextBlock就会被简单地覆盖,这使得所需的输出很难看到
注意:componentContainer是画布
有人知道我做错了什么吗?或者有更好的方法来做类似的事情吗?为什么不简单地将TextBlock实例保留在私有字段中:
private TextBlock debugBox;
private void Debug(string data)
{
if (debugBox == null)
{
debugBox = new TextBlock { Foreground = Brushes.Orange };
componentContainer.Children.Add(debugBox);
}
debugBox.Text = data;
}
为什么不简单地将TextBlock实例保留在私有字段中:
private TextBlock debugBox;
private void Debug(string data)
{
if (debugBox == null)
{
debugBox = new TextBlock { Foreground = Brushes.Orange };
componentContainer.Children.Add(debugBox);
}
debugBox.Text = data;
}
你每次都是tb“tb=new TextBlock()”的新实例,这就是它被覆盖的原因。你每次都是tb“tb=new TextBlock()”的新实例,这就是它被覆盖的原因。哇,太棒了!我以前没想过。真的,谢谢!哇,太棒了!我以前没想过。真的,谢谢!