WPF:标签在代码后台未显示

4

好的,我一直在寻找答案,但我开始怀疑如果我看到它是否会知道。我是WPF的新手,但我已经用C#做Windows Forms几年了。

我的问题是:为什么我无法从代码后台访问我在网格上“拖放并重命名”的标签?

XML代码:

<Window x:Class="IMCommand.NewProblemWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="New Problem" Height="800" Width="800" Loaded="Window_Loaded">
    <Grid>
        <GroupBox Header="Initial Detection and Recording" Height="168" HorizontalAlignment="Left" Margin="12,45,0,0" Name="groupBox1" VerticalAlignment="Top" Width="754" FontSize="15">
            <Grid>
                <Label Content="Application/Server" Height="28" HorizontalAlignment="Left" Margin="6,6,0,0" Name="label1" VerticalAlignment="Top" />
                <TextBox Height="23" HorizontalAlignment="Left" Margin="144,11,0,0" Name="textBox1" VerticalAlignment="Top" Width="324" Background="#FFCBCBCB"></TextBox>

                <Label Content="AE Problem Ticket #" Height="28" HorizontalAlignment="Left" Margin="6,52,0,0" Name="label2" VerticalAlignment="Top" />
                <TextBox Background="#FFCBCBCB" Height="23" HorizontalAlignment="Left" Margin="155,54,0,0" Name="BOX_AEProblem" VerticalAlignment="Top" Width="175" />

                <Label Content="Start Time" Height="28" HorizontalAlignment="Left" Margin="6,86,0,0" Name="label4" VerticalAlignment="Top" Width="85" />
                <TextBox Height="23" HorizontalAlignment="Left" Margin="97,91,0,0" Name="BOX_StartTime" VerticalAlignment="Top" Width="118" IsReadOnly="True" />

                <Label Content="Label" Height="28" HorizontalAlignment="Left" Margin="221,89,0,0" Name="LBL_StartTimeConvert" VerticalAlignment="Top" Width="128" />
            </Grid>
        </GroupBox>

        <GroupBox Header="Classification and Initial Support" Height="333" HorizontalAlignment="Left" Margin="12,260,0,0" Name="groupBox2" VerticalAlignment="Top" Width="754" FontSize="15">
            <Grid>
                <Label Content="Description" Height="28" HorizontalAlignment="Left" Margin="6,96,0,0" Name="LBL_Description" VerticalAlignment="Top" />
                <RichTextBox Height="137" HorizontalAlignment="Left" Margin="97,96,0,0" Name="richTextBox1" VerticalAlignment="Top" Width="590" Background="#FFCBCBCB" Cursor="IBeam" ToolTip="Describe the problem..." VerticalScrollBarVisibility="Visible" SpellCheck.IsEnabled="True" FontSize="12" BorderBrush="#FF151414" />
                <RichTextBox Height="28" HorizontalAlignment="Left" Margin="97,44,0,0" Name="richTextBox2" VerticalAlignment="Top" Width="590" Background="#FFCBCBCB" />
                <Label Content="Summary" Height="28" HorizontalAlignment="Left" Margin="6,44,0,0" Name="label3" VerticalAlignment="Top" />
            </Grid>
        </GroupBox>
    </Grid>
</Window>

我正在指的是第一个名为“LBL_StartTimeConvert”的GroupBox中最后一个标签。
<Label Content="Label" Height="28" HorizontalAlignment="Left" Margin="221,89,0,0" Name="LBL_StartTimeConvert" VerticalAlignment="Top" Width="128" />

当我进入代码文件时,无法在intellisense中显示“LBL_StartTimeConvert”。 我如何从C#代码访问此标签? 我需要更改标签的文本。谢谢!
PS>> 你能指导我学习WPF的好资源/书籍吗(如WPF 101或WPF for Dummies)?非常感谢!

当您在代码后台文件中使用 LBL_StartTimeConvert 时,您的项目是否编译?我想这只是 IntelliSense 的问题。 - Stephan
不,如果我试图手动输入名称,它会立即抛出一个错误。 - Tom
没有足够的信息来回答你的问题。你是在哪个方法中尝试访问LBL_StartTimeConvert?你能添加代码后面的文件和一个期望LBL_StartTimeConvert可访问的示例吗? - chuckj
我刚刚将你的信息粘贴到vs2010中,我能在智能感知中看到LBL_StartTimeConvert。你具体是在哪个方法中尝试访问它? - Mark Hall
3个回答

22

我遇到同样的问题。重新启动VS解决了这个问题。 有时候确实是一个bug ;)


也在这里工作过! - Vasilievski
这真的应该是被接受的答案。经过反复检查,最终我重新启动了 VS,现在一切都好了。 - NappingRabbit

6
请确保你的代码后端与xaml文件中的命名空间和窗口名称相同,因为当我将你的代码粘贴到我的样本窗口中时,它可以正常工作,并且我可以访问标签LBL_StartTimeConvert。
请创建一个新的WPF项目示例,将你在标签内的代码放入其中并进行检查。

3
您应该使用x:Name而不是Name属性。
"x:Name:指定运行时对象名称,该名称在对象元素被处理后存在于运行时代码中的实例中。通常情况下,您会经常使用WPF定义的等效属性来代替x:Name。这些属性特别映射到CLR支持的属性,因此对于应用程序编程更加方便,您可以经常使用运行时代码来查找已命名的元素。"
请参阅XAML概述这里

1
在这个上下文中,“x:Name”和“Name”是同义词,因为它是上面所提到的“WPF定义的x:Name等效属性”。 - chuckj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接