0

人をListBox説明するオブジェクトを含むがあります。このオブジェクトは部分的にのみ埋められ、アイテムがクリックされると完全に埋められます(時間のかかる操作)。まだ塗りつぶされていないオブジェクトのスタイルを変更して、部分的に塗りつぶされたアイテムが斜体で表示されるようにします。

私はItemTemplate:を作りました

<ListBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding}" Style="{StaticResource PersonWithData}"/>
    </DataTemplate>
</ListBox.ItemTemplate>

を定義しましたStyle

    <Style x:Key="PersonWithData" TargetType="{x:Type TextBlock}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding HasData}" Value="True">
                <Setter Property="FontStyle" Value="Normal"/>
            </DataTrigger>
            <DataTrigger Binding="{Binding HasData}" Value="False">
                <Setter Property="FontStyle" Value="Italic"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>

それは実際に機能します。私が持っている問題は、アイテムがクリックされたときにスタイルを更新することです。オブジェクトが塗りつぶされ、スタイルが斜体から通常に変更されます。

ListItemまたはを強制的ListBoxに再描画してスタイルを更新するにはどうすればよいですか?または、HasDataプロパティが変更されたときに何らかの通知を使用する必要がありますか?

4

1 に答える 1

2

INotifyPropertyChangedクラスにインターフェースを実装し、プロパティが変更されるたびにパラメーターを使用Personしてchangeイベントを発行するようにしてください。これに適した場所は、プロパティのセッターです。これは、バインドされたWPFコンポーネントが自動的に更新されるようにするための鍵です。"HasData"HasData

于 2010-02-16T15:47:15.493 に答える