2012-08-27 3 views
0

XamDataGrid에서 "시작"대신 "포함"필터 설정을 변경하려고합니다. 기능 구현을 허용하는 속성이 있습니까?XamDatGrid의 필터 속성을 변경하십시오.

많은 연구 끝에 그것을 찾을 수 없었습니다. 누군가 내가 놓친 것을 발견하면 도움을 줄 수 있다면 좋을 것입니다.

+0

찾고있는 대답이 아닐 수도 있지만 'ICollectionView'를 사용하여 데이터 소스를 직접 필터링 할 수 있습니다. UI 구현과 관련이 없으므로 유연성이 향상됩니다 (MVVM을 사용하고 있습니까?). 이 접근법에 관심이 있으시면 몇 가지 샘플 코드로 답변을 추가 할 수 있습니다. –

+0

예, MVVM을 사용하고 있지만 데이터 소스를 필터링하면 도움이 될지 궁금합니다. 필터링 기능은 시청자가 쉽게 레코드를 찾을 수 있도록하지만, 불행히도 이름의 일부가되어야하는 많은 문자로 시작됩니다. 내가 찾고있는 이유가 들어 있습니다. – user1521554

답변

1

내가 필요한 속성을 얻었습니다. 모두에게 감사드립니다.

그것은 이렇게 가고,

<igDP:Field Name="Description"> 
           <igDP:Field.Settings> 
            <igDP:FieldSettings 
AllowGroupBy="True" 
AllowEdit="True" 
AllowRecordFiltering="True" 
FilterOperatorDefaultValue="Contains"/>           
           </igDP:Field.Settings>  
          </igDP:Field> 
2

당신이 아니라 당신의 ViewModel에 필터링한다면, 여기 당신이 사용하는 것이 방법을 보여줍니다 예입니다 ICollectionView :보기에 그런

public class TestViewModel : INotifyPropertyChanged 
{ 
    private string _filterText; 
    private List<string> _itemsList; 

    public TestViewModel() 
    { 
     _itemsList = new List<string>() { "Test 1", "Test 2", "Test 3" }; 
     this.Items = CollectionViewSource.GetDefaultView(_itemsList); 
     this.Items.Filter = FilterItems; 
    } 

    public ICollectionView Items { get; private set; } 

    public string FilterText 
    { 
     get { return _filterText; } 
     set 
     { 
      _filterText = value; 
      Items.Refresh(); 
      this.RaisePropertyChanged("FilterText"); 
     } 
    } 

    private bool FilterItems(object item) 
    { 

     return this.FilterText == null || item.ToString().Contains(this.FilterText); 
    } 


    #region INotifyPropertyChanged Members 

    public event PropertyChangedEventHandler PropertyChanged; 

    private void RaisePropertyChanged(string propName) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(propName)); 
    } 
    #endregion 
} 

, 당신 단지 DataBind FilterText 속성에 TextBox을 바인딩하고 Items 속성에 대한 ItemsSource 또는 Grid (여기에는 ListBox로 표시됨) :

<TextBox x:Name="ItemsFilter" Text="{Binding FilterText, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" Width="100" Margin="10" VerticalAlignment="Center"/> 
<ListBox x:Name="ItemsList" ItemsSource="{Binding Items}" Grid.Row="1" Width="200" Margin="10" HorizontalAlignment="Left"/> 
+0

감사합니다 브라이언, 제안을 시도합니다 .. – user1521554