3

コレクションから最初の要素 (インデックス x[0] など) を取得できるコード xaml を見たことを覚えています。

これは、Resources の CollectionViewSource です。

<CollectionViewSource
            x:Name="groupedItemsViewSource2"
            Source="{Binding Posters}"
            ItemsPath="Posters" />

これをリストボックスに表示すると、ロードされました!

<ListBox ItemsSource="{Binding Source={StaticResource groupedItemsViewSource2}}" />

しかし今は、xaml を介して最初の要素を取得したいだけです。これを行うことは可能ですか?

4

4 に答える 4

9

私は同様の問題に直面し、私がしたことはMoveCurrentToFirst(ViewModelで)呼び出すことでした

SelectedIndex=0 (XAML の ListBox で)、別の方法でしたが、コレクション ビュー ソースにデータが保持されていない場合に失敗していました。

于 2012-06-21T15:20:30.173 に答える
4

これまでに見つけた最も簡単な方法は、列挙子を使用することです。

ICollectionView view = CollectionViewSource.GetDefaultView(observable);
var enumerator = view.GetEnumerator();
enumerator.MoveNext(); // sets it to the first element
var firstElement = enumerator.Current;

または、拡張機能を使用して同じことを行い、監視可能なコレクションで直接呼び出すことができます。

public static class Extensions
{
    public static T First<T>(this ObservableCollection<T> observableCollection)
    {
        ICollectionView view = CollectionViewSource.GetDefaultView(observableCollection);
        var enumerator = view.GetEnumerator();
        enumerator.MoveNext();
        T firstElement = (T)enumerator.Current;
        return firstElement;
    }
}

次に、監視可能なコレクションから呼び出します。

var firstItem = observable.First();
于 2012-09-13T09:39:22.327 に答える
0

私が知っているこれを達成する方法がいくつかあります。おそらく、コレクションの最初のものを返す別のプロパティを使用するか、バインドされているコレクションまたはリストの最初の要素を返す Converter を作成します。

于 2012-06-19T22:41:13.057 に答える