बाध्यकारी में संग्रह को सीधे फ़िल्टर करने का कोई तरीका नहीं है। हालांकि, डब्ल्यूपीएफ फ़िल्टरिंग (और सॉर्टिंग और ग्रुपिंग) संग्रह को CollectionViewSource
के साथ संग्रह की अनुमति देता है।
एक दृष्टिकोण अपने ItemTemplate
के संसाधनों जो ItemsSource
फिल्टर में एक CollectionViewSource
परिभाषित करने के लिए किया जाएगा एक तत्व है जो इस CollectionViewSource
की गणना संपत्ति से जुड़ कर फिल्टर पारित की संख्या मिलता है। हालांकि, आपको कोडबेंड में अपने फ़िल्टर को परिभाषित करना होगा। कुछ इस तरह दिखेगा:
<TreeView x:Name="Tree" ItemsSource="{Binding Items}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildItems}">
<HierarchicalDataTemplate.Resources>
<CollectionViewSource x:Key="FilteredItems"
Source="{Binding ChildItems}"
Filter="FilteredItems_OnFilter" />
</HierarchicalDataTemplate.Resources>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{} {0} of {1} selected">
<Binding Path="Count" Source="{StaticResource FilteredItems}" />
<Binding Path="ItemsSource.Count" ElementName="Tree" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
और codebehind में:
private void FilteredItems_OnFilter(object sender, FilterEventArgs e)
{
var item = sender as Item;
e.Accepted = item.IsSelected;
}
मैं इसे परीक्षण नहीं किया है, लेकिन यह सामान्य रूप में काम करना चाहिए। तुम्हें पता है, हालांकि WPF के साथ कभी पता नहीं ...
क्या आप एमवीवीएम का उपयोग कर रहे हैं? – DHN
वास्तव में, मैं डीएनएन हूं। –
आप अपने ViewModels या वर्गों है कि कोड-पीछे भाग – Jehof