छानने के लिए
सबसे अच्छा प्रदर्शन ट्वीक है, DataGridRow दृश्यता को टॉगल कर रहा था। यह अंतर की परिमाण बना दिया!
1. संग्रह आइटम में अविश्वसनीय संपत्ति जोड़ें जिसे आप डेटाग्रिड के आइटम स्रोत से जोड़ते हैं।
private bool _isVisible = true;
public bool IsVisible
{
get { return _isVisible; }
set
{
if (_isVisible == value)
return;
_isVisible = value;
RaisePropertyChanged(()=>IsVisible);
}
}
2.Trigger अपने IsVisible संपत्ति के लिए यह बाध्यकारी द्वारा DataGridRow की दृश्यता:
<DataGrid.ItemContainerStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Visibility"
Value="{Binding Path=IsVisible,
Converter={StaticResource BoolToVisibility}}"/>
</Style>
</DataGrid.ItemContainerStyle>
3.Well, आप IsVisible सेट होगा कहीं मैं भी लगता है, अपने ViewModel में की तरह। यहाँ मैं क्या कर रहा हूँ का एक नमूना है (बस कॉपी/पेस्ट काम) - मूल रूप से मेरे दूसरे ViewModel में कुछ मानदंडों के आधार पर सही या गलत का IsVisible की स्थापना:
FilterViewModel.OnFilter += (s, a) =>
{
foreach (Row row in ViewModel.Rows)
row.IsVisible = !FilterViewModel.FilteringItems.Any(item =>
item.IsSelected && item.Name == row.Name);
};
स्रोत
2012-03-15 18:38:20
यह मेरे लिए काम किया। इस तरह एंगुलर में जिस तरह से एक ही समस्या हल हो सकती है :)। – Den