搜索面板错误

时间:2013-06-30 06:59:25

标签: c# .net wpf

我想在我的数据网格中添加搜索面板,代码中没有错误,但如果我输入任何值,则不会显示任何输出。你能回答我的问题吗?我的代码如下:

      <Window x:Class="WpfApplication3.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" 
            dx:ThemeManager.ThemeName="MetropolisDark" 
            Title="MainWindow" Height="350" Width="525"   xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
            ResizeMode="CanMinimize" mc:Ignorable="d" Loaded="Window_Loaded" xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors">


            <Grid Background="#FF333333" >
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>

            <TextBlock Grid.Row="1" Height="28" HorizontalAlignment="Left" Margin="41,12,0,0" x:Name="textBlock1"  Text="Type here" VerticalAlignment="Top" Width="71" />
            <TextBox Grid.Row="1" HorizontalAlignment="Left" Margin="139,12,0,246" x:Name="textBox1" Width="233" TextWrapping="NoWrap" TextChanged="textBox1_TextChanged" />
            <ListBox Grid.Row="1" Background="LightYellow" Visibility="Collapsed" Height="33" HorizontalAlignment="Left" Margin="220,45,0,0" Name="listBox1" VerticalAlignment="Top" Width="202" />
        </Grid>
</Window>
      public partial class MainWindow : Window
    {
       //object used for update data
        DataClasses1DataContext objContext = new DataClasses1DataContext();
        //object used to update selected row data 
        Assignment student = null;
        IEnumerable eventt_grp1;
        public MainWindow()
        {
            InitializeComponent();
               //Database context
                //StudentDBDataContext objContext = new StudentDBDataContext();

                //Linq to SQL: this is like sql select query 
                //std is table alias
                //objContext.StudentDetails is table from data is seleted 
                //var result: behaves like DataSet/DataTable 
              List<Assignment> a = new List<Assignment>();

              eventt_grp1 = a.Select(r => new { r.assignment_title }).ToList();

               textBox1.TextChanged += new TextChangedEventHandler(textBox1_TextChanged);

                //Show message if it has rows 


        }

        private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
        {

  string typedstring= textBox1.Text;
List<string> autolist= new List<string>();
foreach(string b in eventt_grp1)
{
if(!string.IsNullOrEmpty(textBox1.Text))
{
if(b.StartsWith(typedstring))
{
autolist.Add(b);
}
}
}
if(autolist.Count>0)
{
    listBox1.ItemsSource = autolist;
    listBox1.Visibility = Visibility.Visible;

}
else if (textBox1.Text.Equals (""))
{

    listBox1.Visibility = Visibility.Collapsed;
    listBox1.ItemsSource = null;
}

else
{

    listBox1.Visibility = Visibility.Collapsed;
    listBox1.ItemsSource = null;
}


        }

        private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

            if (listBox1.ItemsSource != null)
            {
                listBox1.Visibility = Visibility.Collapsed;
                textBox1.TextChanged += new TextChangedEventHandler(textBox1_TextChanged);
            }

            if (listBox1.SelectedIndex != -1)
            {
                textBox1.Text = listBox1.SelectedItem.ToString();
                textBox1.TextChanged += new TextChangedEventHandler(textBox1_TextChanged);
            }
        }

i                        我也附上了它的形象!谢谢!

1 个答案:

答案 0 :(得分:0)

我建议你调试流程。自动列表可能为空。也可以使用它来更新数据源:

listBox1.DataSource = null;

listBox1.DataSource = myList;

希望有所帮助

编辑: 提示 - &gt;格式化你的代码!