1

したがって、オンラインで記事を見つけたにもかかわらず、私はまだこれを理解することができません。

リストボックスがあります

<ListBox HorizontalAlignment="Left" Margin="54,35,0,0" Name="resultsbox" VerticalAlignment="Top" Width="382" Visibility="Collapsed">
    <DataTemplate>
        <StackPanel>
            <TextBlock Text="{Binding nameElement}"/>
        </StackPanel>
    </DataTemplate>
</ListBox>

それはにデータバインドされています

   ObservableCollection<string> results = new ObservableCollection<string>();

で更新されます

   private void searchbox_TextChanged(object sender, TextChangedEventArgs e)
    {

    resultsbox.Visibility = Visibility.Visible;

    resultsbox.ItemsSource = results;



    if (results.Count == 0)
    {
        foreach (ele item in eles)
        {
            if (!results.Contains(item.nameElement))
            {
                results.Add(item.nameElement);
            }
        }
    }
    else
    {
        resultsbox.Items.Clear();
    }

    if (searchbox.Text.Equals(""))
    {
        window1.Height = 47;
        resultsbox.Visibility = Visibility.Collapsed;
    }


    if (resultsbox.Items.Count == 0)
    {
        resultsbox.Visibility = Visibility.Collapsed;
        window1.Height = 47;
    }
    else{
        window1.Height = 47 + (22 * resultsbox.Items.Count);
    }
  }

そこにすべてのデータをロードしますが、更新されません!

私がそうするならば、resultsbox.clear()それはあなたが束縛されたアイテムをクリアすることができないと言います。ソースをクリアしようとしても、何もしません。結果ボックスのitemsourceをnullに設定し、ソースをクリアしてから再バインドしようとしても、何も起こりません。リストボックスを空のソースにバインドしようとしても、何も実行されません。

4

2 に答える 2

0

The answer was changing the foreach loop in the update from

 resultsbox.ItemsSource = results;
    if (results.Count == 0)
    {
        foreach (ele item in eles)
        {
            if (!results.Contains(item.nameElement))
            {
                results.Add(item.nameElement);
            }
        }
    }

to

results.Clear();
    foreach (ele item in eles)
    {
        if (item.nameElement.ToLower().Contains(searchbox.Text.ToLower()))
        {
            results.Add(item.nameElement);
        }
    }

resultsbox.ItemsSource = results;
于 2013-02-21T04:07:38.337 に答える
-1

Two-Way Mode Binding を使用して要件 IMO を達成することができます。

<ListBox HorizontalAlignment="Left" Margin="54,35,0,0" Name="resultsbox" VerticalAlignment="Top" Width="382" Visibility="Collapsed">
<DataTemplate>
    <StackPanel>
        <TextBlock Text="{Binding nameElement, Mode=TwoWay}"/>
    </StackPanel>
</DataTemplate>

于 2013-02-21T03:49:35.060 に答える