我有這樣的標籤綁定:更新內容時,子屬性改變
<Label Name="LblUsersWithHair">
<Binding Path="Users"
ElementName="ElementSelf"
Converter="{StaticResource Converter_UsersWithHairPresenter}" />
</Label>
和轉換器:
...
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var users = value as ObservableCollection<Users>;
if (users == null) return null;
var usersWithHair = users.Count(user => user.HasHair == true);
return "There are " + usersWithHair + " there has hair.";
}
...
問題現在當'HasHair'屬性發生更改時,標籤當然不會更新,因爲集合沒有更改。但是,如果設置此屬性,我該如何強制標籤重新綁定?
上面的例子是非常簡單的,但是希望你能幫助我...:O)
我有一個應用程序,它具有一個自定義類型的ObservableCollection,我所要做的就是在自定義類上實現INotifyPropertyChanged,並且當我通過綁定更改下面的項目時,DataGrid會正確更新,而無需執行任何其他操作。 我的應用程序是用WPF編寫的,所以如果OP的應用程序在Silverlight中,我不知道它的行爲是否有所不同。 – Mike 2010-08-14 04:49:04
是的,你的網格行會更新,因爲DataGrid是一個ItemsControl,每一行都隱式地創建一個綁定到相應的列表項。 但是一個ContentControl(作爲標籤)綁定到列表(而不是更改後的列表項)將不會在PropertyChange上更新列表項。 – 2010-08-14 10:21:14
哦,好的。我明白你在說什麼。我從來沒有在DataGrids或TreeViews以外的任何地方嘗試過。每天學些新東西... – Mike 2010-08-14 18:54:59