2

filterComboBoxを使用して、データをバインドしたいと考えています。そのために、 と を作成しました。コード ビハインドでは、ファイルを読み取り、 のアイテムとして格納されるクラス Channel のオブジェクトを生成します。コンパイラはエラーをスローしませんが、フィルタリングは正しく機能しません。何かを書き込めばデータは失われ、消せば元に戻ります。試行錯誤した後、「myNamespace.myChannel」(Unico.Canal)と入力し始めた場合、データは残っていてもフィルタリングされないことに気付きました。確かに、奇妙な行動。何かを間違った場所に置いた疑いがあります。TextBoxComboBoxComboBox

ここに画像の説明を入力ここに画像の説明を入力ここに画像の説明を入力

(理解を深めるために、コードを翻訳しました。Canal=Channel)

これが私のコードのスキームです:

namespace Unico
{
        public partial class ControlesArchivo : UserControl, INotifyPropertyChanged
        {
            public ControlesArchivo()
            {

                InitializeComponent();        
            }

    public ObservableCollection<Channel> myListChannels //with INotifyPropertyChanged implemented. But I think I don't need it.

     private void loadButton_Click(object sender, RoutedEventArgs e)
            {

              File loadedFile = new File();
              loadedFile.read(); //Generates a bunch of data in lists.

              foreach (Channel mychan in loadedFile.channels) //Just duplicating the data (maybe this can be avoided)
                   {
                    myListChannels.Add(mychan);
                   }

         var view = CollectionViewSource.GetDefaultView(this.miListaDeCanales);
                        view.Filter = delegate(object o)
                        {
                            if (o.ToString().Contains(myTextBox.Text)) //Delicate place
                            {
                                return true;
                            }
                            return false;
                        };

                myComboBox.ItemsSource = view;
     DataContext = this;
    }


     private void myTextBox_TextChanged(object sender, TextChangedEventArgs e)
            {


                       ((ICollectionView)myComboBox.ItemsSource).Refresh();
                       myComboBox.SelectedIndex = 0;

            }


      }
    }

データは XAML で次のようにバインドされます。

 ItemsSource="{Binding view}" 

編集:どこに問題があるかはわかっていると思います:フィルターするプロパティを指定していません。つまり、ComboBoxに表示されるのは、myListChannels にリストされているchannelNameのプロパティです。class Channelフィルタを設定するとき、何をフィルタリングしているかを知らせてはいけませんか? どうすればこれを書くことができますか?どうもありがとうございました。

4

1 に答える 1