的longlistselector控制似乎正是我需要爲我的申請,我有一個很長的名單,我需要顯示和我喜歡的分組功能,它實現,但我真的很努力與數據綁定方面的工作。基本的數據綁定工作需要一段時間才能完成,但我已經具備了完整的功能。如果某個項目被刪除或添加,UI更新會正確,因爲數據源是從ObservableCollection派生的。WP7 LonglistSelector綁定 - 如何觸發更新到綁定項的結合
,我遇到的問題是,我在個人dataitems,我結合,表明如果一個人的列表項應顯示或隱藏的圖形標誌。這個想法是,當用戶在一個項目上執行一個保持手勢時,它會根據對綁定項目屬性的更改來打開或關閉圖形。
Visibility="{Binding Converter={StaticResource isFavoriteToVisibility}}
爲獲得該組頭和這種要求就像ObservableCollection<ObservableCollection<MyItem>>
數據源的數據綁定LongListSelector要求(這是混亂只是爲了看看!)。實質上,外部集合是組,而內部集合包含顯示的項目。我的項目甚至實現了INotifyPropertyChanged接口。我期望的是我的項目屬性的更新會自動反映在我的數據綁定中,而不僅僅是添加或刪除集合中的項目。
如果我切換屬性值沒有任何反應,直到我手動刷新這需要完全重新加載綁定。該控件可能無法響應單個項目的屬性changed事件。
我需要的是幫助,搞清楚什麼我可以做,以觸發單個列表項的更新,我已經改變了綁定對象的一個屬性之後?
更新:
克勞斯,您創建是非常有益的(對不起,我沒有足夠的代表處,以投你了呢!)使用代碼我能顯著簡化我的代碼的代碼,並做更多的測試,但它仍然不能解決我的問題。
我現在已經確定的是,我的結合是罰款。如果我更改屬性時綁定到一個文本字段text="{Binding IsFavorite}"
完美無瑕地更新。什麼似乎沒有工作是當我更新綁定到IValueConverter Visibility="{Binding Converter={StaticResource isFavoriteToVisibility}}"
它不更新時更新相同的屬性。轉換器在初始綁定時工作正常,但不是屬性更改。爲了進一步進行測試,我將相同的bool屬性綁定到文本字段和IValueConverter。當我更改布爾值時,文本字段會更新,但不會使用轉換器進行字段綁定。
public class VisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Chemical chem = value as Chemical;
if (chem == null)
return Visibility.Collapsed;
if (chem.IsFavorite)
return Visibility.Visible;
else
return Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
XAML:
<myNS:ChemicalToFavoriteVisibilityConverter x:Key="isFavoriteToVisibility" />
<Rectangle Grid.Column="0"
Fill="{StaticResource PhoneContrastBackgroundBrush}"
Height="26" Stroke="Black" Width="26"
Visibility="{Binding Converter={StaticResource isFavoriteToVisibility}}">
<Rectangle.OpacityMask>
<ImageBrush ImageSource="/Images/star_big.png"/>
</Rectangle.OpacityMask>
</Rectangle>
<StackPanel Grid.Column="1" Margin="0,0,0,0">
<TextBlock Text="{Binding IsFavorite}"
TextWrapping="Wrap"
Style="{StaticResource PhoneTextLargeStyle}"
Foreground="{StaticResource PhoneForegroundBrush}"/>
</StackPanel>
在問候了LongListSelector的數據綁定,你可以使用像https://gist.github.com/1089190 –
這樣的簡化它看起來不像是實現將是可觀察的。你可以發佈一個代碼示例來用一個簡單的分組列表來填充這個類嗎?看起來也許我會通過某種lambda或類似的。 – CactusPCJack
您可以使其實現ObservableCollection而不是列表。實現類似於:GroupedUsers = new LongListCollection (users,u => u.Name [0]); –