2010-01-27 2 views
2

항목 컨트롤에 표시되는 행 수를 제한하는 방법이 있습니까? ?Items 컨트롤에 표시되는 행 수 제한

Items 컨트롤에 바인딩 된 관찰 가능한 컬렉션의 문자열이 있습니다. 표시 할 행 수를 하나만 제한하려고합니다. 컬렉션에는 둘 이상의 컬렉션이있을 수 있습니다.

감사합니다,

+0

당신이 컬렉션 중 어떤 항목을 결정하려면 어떻게 보여줄까요? 사용자가 선택한 항목을 어떻게 변경할 수 있습니까? 더 많은 정보를 추가하려면 질문을 변경하십시오. 그렇게하려면 자신의 질문에 대답하지 마십시오. – Dabblernl

답변

0

체크 아웃 여기 http://jobijoy.blogspot.com/2008/12/paginated-observablecollection.html

내 PaginatedObservableCollection을 이렇게하면 N 항목에 결합하고 ItemsPerPage를 설정할 때 UI 디스플레이 'N'항목을 만들 수 있습니다 서브 클래 싱 된 ObservableCollection에 있습니다. 귀하의 경우에는 1을 넣고 내 샘플에서와 같이 다음 버튼과 이전 버튼을 바인딩 할 수 있습니다.

희망이 있으시면 알려주세요.

+0

나는 observable 컬렉션에 대한 어떠한 통제도 가지고 있지 않다. paginatedObservableCollection을 사용하도록 변경할 수 없습니다. – RRR

1

ItemsSourceMyObservableCollection으로 설정되어 있다고 가정 해 보겠습니다.

글쎄, ItemsSourceMyOneItemCollection으로 바꾸려면 어떻게해야합니까?

그런 다음, 바로 이런 일을 할 LINQ를 사용

using System.Linq; 
MyOneItemCollection = MyObservableCollection.First(); 

또는

using System.Linq; 
MyOneItemCollection = MyObservableCollection.Single(item => item.Id = MyId); 
0

코드를 작성하지 않고, 완전히 XAML이 할 수있는 방법이 있나요?

<ItemsControl Height="100" ItemsSource="{erm:Items FieldName}" Grid.Row="1" > 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}" TextWrapping="Wrap" FontSize="14" VerticalAlignment="Center" FontWeight="Bold" /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate>  
</ItemsControl> 

나는 위와 같은 항목을 바인딩했습니다. Items 태그 확장은 observable 문자열 컬렉션을 반환하고 observable 컬렉션에 대한 제어권이 없습니다.

0

n 요소 만 제공하는 사용자 지정 CollectionView을 구현할 수 있습니다. 내 자동 완성 텍스트 상자 컨트롤 구현에 비슷한했다, 여기에 체크 아웃 :

A Reusable WPF Autocomplete TextBox

스크롤 Limiting the Completions List 제목 헤더 아래는 내가 거기에 무슨 짓을 참조하십시오.

0

단일 항목 만 생성하는 CollectionView을 만들어이 작업을 수행 할 수 있습니다. 이것은 매우 간단합니다 : 그냥 CollectionView를 서브 클래스와 기본 컬렉션의 첫 번째 항목을 제외한 모든 필터링하는 필터를 설정 OnCollectionChanged를 오버라이드 (override) :

protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs args) 
{ 
    base.OnCollectionChanged(args); 
    var first = SourceCollection.FirstOrDefault(); 
    Filter = (obj) => obj == first; 
} 

지금 당신은 당신의 ItemsSource에이 CollectionView를 삽입해야합니다. erm:ItemsProvideValue이 실제 컬렉션을 생성하거나 변환기가없는 바인딩을 생성하는 경우 사용자 정의보기에서 래핑하거나 변환기를 추가하여 래핑을 수행하는 자체 MarkupExtension을 만들면됩니다. 반면에, erm : Items가 이미 Converter가있는 Binding을 생성하거나 생성 된 것을 아는 데 의존 할 수 없다면 좀 더 일반적인 솔루션을 사용해야합니다. 연결된 속성을 제안 할 것입니다.

<ItemsControl 
    my:SinglerCollectionViewCreator.ItemsSource="{erm:Items FieldName}" 
    ... /> 

과 SinglerCollectionViewCreator 클래스의 코드는 다음과 같습니다 : 연결된 속성을 사용하려면

은, 당신의 ItemsControl에이 같은 바인딩됩니다

public class SinglerCollectionViewCreator : DependencyObject 
{ 
    public object GetItemsSource(... // use "propa" snippet to fill this in 
    public void SetItemsSource(.... 
    public static readonly DependencyProperty ItemsSourceProperty = ... 
    { 
    PropertyChangedCallback = (obj, e) 
    { 
     obj.SetValue(ItemsControl.ItemsSourceProperty, 
     new SinglerCollectionView(e.NewValue)); 
    } 
    } 
} 

방법이 작품은, 때마다 새를 SinglerCollectionViewCreator.ItemsSource 속성이 모든 개체에 설정되어 있으면 값은 SinglerCollectionView 클래스에 래핑되고 ItemsControl.ItemsSource은 같은 개체에 설정됩니다.

1

당신은 오직 대신 사용 가능한 동일하는 주형 옵션이있는 ContentControl을을 사용하여 첫 번째 항목을 표시 할 수 있습니다 표시 한 항목이 필요한 경우 :

<ContentControl DataContext="{erm:Items FieldName}" Content="{Binding [0]}"> 
    <DataTemplate> 
     <TextBlock Text="{Binding}" TextWrapping="Wrap" FontSize="14" VerticalAlignment="Center" FontWeight="Bold" /> 
    </DataTemplate> 
</ContentControl> 
0

당신은 변환기 보르를 사용할 수 있습니다이 :

public class ItemsLimiter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     int count; 
     if (Int32.TryParse((string)parameter, out count)) 
     { 
      return ((IEnumerable<object>)value).Take(count); 
     } 
     return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     return null; 
    } 
} 
XAML에서

이처럼 사용할 수 있습니다

<ItemsControl ItemsSource="{x:Bind Data, Converter={StaticResource ItemsLimiter}, ConverterParameter=12}"> 
관련 문제