ボタンの IsEnabled プロパティをウィンドウの CollectionViewSource のプロパティにバインドしようとしています。First/Previous/Next/Last ボタンを実装するためにこれを行っており、ビューが最初の項目などにある場合は First と Previous を無効にします。
コレクション ビュー ソースをセットアップし、UI コントロールを正しくバインドし、コードでそのビューにアクセスできるようにして、クリック イベント ハンドラーがビュー内を移動する際に正常に動作するようにします。
<CollectionViewSource x:Key="cvMain" />
DockPanel はウィンドウのルート要素です
<DockPanel DataContext="{StaticResource cvMain}">
FoJobs は監視可能なコレクションです。cvJobs は、ボタンのクリック ハンドラーで使用する CollectionView です。
private void Window_Loaded(object sender, RoutedEventArgs e) {
((CollectionViewSource)Resources["cvMain"]).Source = FoJobs;
cvJobs = (CollectionView)((CollectionViewSource)Resources["cvMain"]).View;
}
これを試してみましたが、「BindingExpression path error: '' property not found on 'object' ''ListCollectionView'」というバインディング エラーが発生します。
<Button Name="cbFirst" Click="cbMove_Click" IsEnabled="{Binding Source={StaticResource cvMain}, Converter={StaticResource CurrPos2BoolConverter}}" />
最初にコンバーターを使用しようとしていますが、トリガーを使用したスタイルの方が効率的ですが、コレクション ビューにアクセスできません。基になるデータ コンテキストがコレクション ビュー ソースに設定されていても、バインディングはビューのソースとしてコンバーターに渡されます (上記のようにバインディングのソースを明示的に設定しない場合)。これには通貨プロパティ (CurrentPosition、Count など) はありません。
どんな助けでも大歓迎です。