Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight应用程序在向layoutroot添加文本块时冻结_C#_Silverlight - Fatal编程技术网

C# Silverlight应用程序在向layoutroot添加文本块时冻结

C# Silverlight应用程序在向layoutroot添加文本块时冻结,c#,silverlight,C#,Silverlight,我不明白为什么这个简单的silverlight应用程序会死机。代码如下: namespace test { public partial class MainPage : UserControl { TextBlock txtword; public MainPage() { InitializeComponent(); txtword = new TextBlock(); txtword.Text = "TEST";

我不明白为什么这个简单的silverlight应用程序会死机。代码如下:

namespace test
{
public partial class MainPage : UserControl
{
    TextBlock txtword;
    public MainPage()
    {

        InitializeComponent();

        txtword = new TextBlock();
        txtword.Text = "TEST";

        LayoutRoot.Children.Add(txtword);
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        txtword.Text = "SuperDuper";
    }

}
}
文本块添加到layoutroot后,如果您尝试悬停或单击按钮,则可以看出应用程序由于某种原因已冻结。知道这里发生了什么吗


如果在XAML中添加文本块,则可以在单击按钮时更改其文本属性。LayoutRoot.Children.Add()导致应用程序冻结。

从您的评论中可以看出,MainPage.XAML中的XAML如下所示:


在code或XAML中添加
TextBlock
后,您实际上会得到以下结果:


您的
网格
没有指定任何
列定义
s或
行定义
s,因此,在给定网格的整个宽度和高度的情况下,您有一个1×1的网格,其中包含
网格
的所有子控件

由于您的
按钮
文本块
都没有指定z索引值(使用
Canvas.ZIndex
),因此它们的z顺序由它们在网格的
子对象中的位置定义。
文本块
位于
按钮
之后,因此它是“位于顶部”的文本块

TextBlock
可能只包含少量文本,但
TextBlock
本身仍将填充
网格
TextBlock
s不会自动调整大小以适应其包含的文本,而不会调整其他内容。您的
按钮
似乎不起作用,因为
文本块
位于按钮上方并接收所有鼠标事件
TextBlock
s是静态控件,对任何鼠标事件都不做任何响应,这应该可以解释为什么你的应用程序看起来冻结了


文本块
水平对齐
和/或
垂直对齐
设置为
拉伸
以外的值将停止
文本块
被赋予
网格
的整个宽度和高度,并允许
按钮
接收鼠标事件。

对不起,我不能复制任何冷冻。您使用的是哪个Silverlight版本?哪个Visual Studio版本?您能在多台计算机上重现此问题吗?我使用的是silverlight 5,visual studio 2010,我能够在我的笔记本电脑和工作计算机上产生此问题。@LukeWoodward您没有在XAML中声明textblock,是吗?这对我来说确实有效,但如果我试图在代码中创建并添加textblock,它就不起作用了。编辑:让我换一句话:它确实可以工作,但当文本块显示在屏幕上后,我就不能再与UI交互了。你的
布局启动
网格
?如果是这样,并且
TextBlock
位于按钮顶部(请注意,
TextBlock
默认情况下将填充网格,即使其文本不会填充网格),则单击的是
TextBlock
,而不是按钮。将
文本块
水平对齐
和/或
垂直对齐
设置为
拉伸
以外的值是否有帮助?My
LayoutRoot
确实是一个
网格
,但
文本块
不在按钮顶部。但是,当以编程方式添加
Textblock
时,就会出现问题。编辑:但是,在c代码中设置文本块的水平和垂直属性后,程序可以工作。这简直让我发疯了,为什么要这么详细地解释呢。这让我很难堪。