Wpf中的列表框“当前上下文中不存在”错误

时间:2014-05-21 08:57:35

标签: c# wpf listbox

我正在尝试Mahapp Metro(使用VS 2012 Express),所以我尝试编写一个示例应用程序,所以我只创建了一个窗口,放入一个列表框和一个按钮。该按钮应该在按钮单击时将新列表项添加到列表框中。

由于这只是一个测试应用程序,我只想使用一个简单的代码后面的程序。但是当我在后面的代码中引用名为“listboxTest”的列表框时,我得到错误“名称”listboxTest“在当前上下文中不存在”。但这只是后面代码中列表框的直接引用。我检查了我是否犯了错误,因为C#区分大小写,但我没有。我添加了所有命名空间(一些不必要的命名空间)但是徒劳无功。代码在

之下

XAML:

<controls:MetroWindow x:Class="Eloq_Home.TestWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
    xmlns:System="clr-namespace:System;assembly=mscorlib"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:Behaviours="clr-namespace:MahApps.Metro.Behaviours;assembly=MahApps.Metro"
    xmlns:Views="clr-namespace:Eloq_Home.Views"
    Title="TestWindow" Height="402" Width="497">

<Grid>

    <ListBox x:Name="listboxTest" HorizontalAlignment="Left" Style="{StaticResource KeysListBox}" 
                                  Height="278" Margin="91,10,0,0" VerticalAlignment="Top" Width="319">

        <ListBoxItem />
        <ListBoxItem />
        <ListBoxItem />
        <ListBoxItem />            

    </ListBox>

    <Button x:Name="addTest" Content="Add" HorizontalAlignment="Left" 
                             Height="45" Margin="263,317,0,0" VerticalAlignment="Top" Width="119" Click="addTest_Click"/>

</Grid>

代码背后:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

using MahApps.Metro.Controls;
using MahApps.Metro.Controls.Dialogs;

namespace Eloq_Home
{
    /// <summary>
    /// Interaction logic for TestWindow.xaml
    /// </summary>
public partial class TestWindow : MetroWindow
{
    public TestWindow()
    {
        InitializeComponent();
    }

    public void addTest_Click(object sender, RoutedEventArgs e)
    {
        ListBoxItem itm = new ListBoxItem();
        //itm.Content = "some text";

        listboxTest.Items.Add(itm);
    }         

}

}

错误:

“listboxTest.Items.Add(itm);”这是我有错误的行,每当我尝试引用列表框时我都会得到相同的错误,我试图设置它的项目来源,得到了同样的错误。

我绝对知道这是一个菜鸟问题但是我被困住了,感谢任何帮助。

enter image description here

IT工作在我注释掉我引用我的列表框的单行

2 个答案:

答案 0 :(得分:0)

只需从ListBox标记中删除 Style =&#34; {StaticResource KeysListBox}&#34; ..它将起作用:-)

答案 1 :(得分:0)

我测试了您的代码,它运行良好VS2012 Ultimate版。你可以再试一次吗?

以下是代码

<metro:MetroWindow x:Class="TestListBox.TestWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:metro="http://metro.mahapps.com/winfx/xaml/controls"
    Title="MainWindow" Height="325" Width="525">
    <StackPanel>
        <ListBox x:Name="listboxTest" HorizontalAlignment="Left"
                              Height="100" Margin="91,10,0,0" VerticalAlignment="Top" Width="319">
            <ListBoxItem />
            <ListBoxItem />
            <ListBoxItem />
            <ListBoxItem />
        </ListBox>

        <Button x:Name="addTest" Content="Add" HorizontalAlignment="Left" Height="45" Margin="91,10,0,0" VerticalAlignment="Top" Width="119" Click="addTest_Click"/>
    </StackPanel>
</metro:MetroWindow>

我根本没有改变你的代码。我刚刚取消注释了您在addTest_Click方法中评论的两行。