私はWPFでC#でプロジェクトを進めています。私はListView
を持っています。これは、オブジェクトへのバインドによって生成されます。これは、_nameがのフィールドです。どの_nameを更新するかを知って特定のProgressBar
を更新できるようにしたい。したがって、現在の_nameが「タスクA」の場合、「タスクA」と同じ行のProgressBar
を更新したいとします。しかし、進捗バーに名前を付けることができないため(名前にデータをバインドしようとするとエラーメッセージが表示される)、コードからProgressBar
にアクセスする方法を見つけることができませんでした。私はタグを使用しようとしましたが、特定のタグを持つコントロールにアクセスする方法を理解できませんでした。どんな助けでも大歓迎です。以下は、私のプロジェクトのXAMLの一部です。C#のListViewでProgressBarにアクセスする方法名前なしのWPF
<ListView.View>
<GridView>
<GridViewColumn Width="30">
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding _name}" IsChecked="True"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="200" DisplayMemberBinding="{Binding _name}">Task Name</GridViewColumn>
<GridViewColumn Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ProgressBar Width="145" Height="15" Maximum="100" Value="{Binding _progress}" Tag="{Binding _name}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
私はあなたが言ったことに従って、私のデータオブジェクトクラスはINotifyPropertyChangedを実装して、表示されたイベントと関数を追加しましたが、プログレスバーは視覚的に更新されません。進行状況を更新するときに印刷をデバッグすると正しい番号が出力されるので、フィールドは正しく更新されます。 –
本当にXAMLの*プロパティ*にバインドしましたが、バッキングフィールドにバインドしていませんか? – mm8
_progressではなくProgressを使用するようにプロパティを更新するコードを更新するのを忘れました。ありがとうございました! –