2016-09-13 3 views
0

に結合子に基づいて、親コレクションのアップデート:私はその後、私の見解モデルの二項目のコレクションを持っているは私がItemsControlにに結合したアイテムのコレクション、持ってUWP

<ItemsControl ItemsSource="{Binding ProductCategories, Mode=TwoWay}"> 
                <ItemsControl.ItemTemplate> 
                    <DataTemplate> 
                        <ToggleButton IsChecked="{Binding IsSelected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> 
                            <TextBlock Text="{Binding CategoryName}"/> 
                        </ToggleButton> 

を、上記のコレクションに依存するクエリに基づいています。

私の要件は、上記のカテゴリに基づいて製品のリストをフィルタリングすることです。私が持っている問題は、上記のバインディングがProductCategoryにあることです。そのため、SetがProductCategoryの 'IsSelected'プロパティに対して正しく起動されている間、 'ProductCategories'が変更されたことは通知されません。

製品のリストは次のように定義されます

public class ProductCategories : ObservableCollection<ProductCategory> 

私が最初に考えた私はDataTriggerを使用することによって、これを達成できるということでした。しかし、これらはWinRT以来利用可能ではないようです。これに対してメッセージ通知を使用することもできますが、これはXAMLバインドから直接達成可能なものであるように感じられます。

私の質問は、子クラスが変更されたときに、親クラスが変更されたという通知を発生させることができるということです。

答えて

0

他のコレクション(ProductCategories)から選択したアイテムで1つのコレクション(Products?)をフィルタリングしようとしていますか?

もしそうなら、あなたはこれを少し考えているようです。 ProductCategoryクラスから「IsSelected」コンセプトを削除します。これは、表示関連であり、モデルに属さないためです。次に、ProductCategories ItemsControlをListBoxに変更し、LsitBox.SelectedItemをビューモデルの 'SelectedProductCategory'プロパティにバインドします(Mode=TwoWay, UpdateSourceTrigger=PropertyChanged)。ユーザーがリストボックス内の項目を選択すると、 'SelectedProductCategory'セッターが呼び出されます。その時点で、2番目のコレクションをフィルタリングできます(コレクションが変更通知をサポートしていない場合はPropertyChangedを呼び出すことを忘れないでください)。

希望します。

関連する問題