WPF: метка не отображается в коде позади - PullRequest
4 голосов
/ 18 августа 2011

Хорошо, так что я искал повсюду, но я начинал задаваться вопросом, знаю ли я это, если бы увидел. Я новичок в WPF, но уже несколько лет работаю с Windows Forms на C #.

У меня такой вопрос: Почему я не могу получить доступ к метке из кода, который я «перетащил-бросил» в сетку и переименовал?

КОД 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>

Конкретный ярлык, на который я ссылаюсь, является последним ярлыком в первом GroupBox с именем "LBL_StartTimeConvert"

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

Когда я вхожу в кодовый файл, я не могу заставить "LBL_StartTimeConvert" отображаться в intellisense. Как я могу получить доступ к этой метке из кода C #? Мне нужно изменить текст метки. Спасибо!

PS >> Будем весьма благодарны за любые полезные ресурсы / книги, на которые вы можете указать мне при изучении WPF (например, WPF 101 или WPF для чайников)!

Ответы [ 3 ]

19 голосов
/ 24 июня 2012

У меня была такая же проблема. Перезапуск VS решил это. Иногда это действительно ошибка;)

5 голосов
/ 19 августа 2011

Пожалуйста, убедитесь, что ваше пространство имен и имя окна совпадают в коде позади файла xaml, потому что когда я вставил ваш код в мое окно примера, он работает нормально, а также я могу получить доступ к метке LBL_StartTimeConvert.

Пожалуйста, создайте новый пример проекта WPF и поместите свой код внутри тега <grid>, а затем проверьте его.

3 голосов
/ 18 августа 2011

Вы должны использовать x: Name вместо Name
"x: Name: указывает имя объекта времени выполнения для экземпляра, который существует в коде времени выполнения после обработки элемента объекта. В общем случае вы часто будете использовать определенное WPF эквивалентное свойство для x: Name. Карта таких свойств в частности, к вспомогательному свойству CLR, что делает его более удобным для прикладного программирования, где вы часто используете код времени выполнения для поиска именованных элементов из инициализированного XAML. "
См. Обзор XAML Здесь

...