2010-02-16 123 views
0

我有一個ListBox其中包含描述一個人的對象。當物品被點擊時,這些物品僅被部分填充並且完全填充(耗時高的操作)。我想改變尚未填充的對象的樣式,以便部分填充的項目以斜體顯示。WPF。如何強制listitem重繪自己?

我做了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> 

它的實際工作。我遇到的問題是在點擊某個項目時更新樣式。對象被填充並且應該導致樣式從斜體變爲正常。

我能做些什麼來強制ListItemListBox重繪自己並更新樣式?或者我應該在HasData屬性更改時使用某種通知?

回答

2

你應該確保你實現INotifyPropertyChanged接口在Person類,並與每一個你HasData屬性更改時間"HasData"參數發出更改事件。這是一個很好的地方,是該物業的負責人。這是綁定WPF組件自行更新的關鍵。