0

次のようにリストボックスにデータバインドしようとしています:

<ListBox x:Name="MyListBox" Margin="0,0,0,65">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Converter={StaticResource MyConverter}}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

プロパティではなくオブジェクト全体にバインドする理由は、コンバーターが返す文字列を作成するためにオブジェクトの複数のプロパティが必要になるためです。

これは機能し、私の文字列が返されます。しかし、ObservableCollection を変更しても、値に基づいていることは画面上で変化しません。1 つのプロパティだけにバインドして変更すると、値が変更されます。

他に何ができますか?コンバーターでオブジェクト全体が必要なため、単一のプロパティにバインドできません...そして、ConverterParameter は既に使用されています。

4

2 に答える 2

4

「メイン」プロパティにバインドし、メイン プロパティ自体の値が変更されていない場合、バインド自体を更新する理由がないことに注意してください。コンバーターが実際にサブプロパティに基づいているという手がかりはありません。できることは、「メイン」プロパティだけでなく特定のサブプロパティもバインドするMultiBindingを使用することです。これにより、IMultiValueConverter実装がメイン データ オブジェクトにアクセスできるようになりますが、変化するサブプロパティにもバインドしているため、そのサブプロパティの値が変化すると更新されます。

于 2009-10-21T20:16:51.853 に答える
1

バインディングのいずれかがトリガーされるたびに更新されると思われるMultiBindingを使用してみてください。IMul​​tiValueConverter を使用するか、バインディングのStringFormatを利用することもできます。

于 2009-10-21T20:18:24.047 に答える