2

ボタンの 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 など) はありません。

どんな助けでも大歓迎です。

4

1 に答える 1