私は次のように私は初期化ObservableCollectionRangeにおけるソーシャルメディアのコレクションを持っている:私の下Observable CollectionのItemプロパティをSwitchステータスにバインドする方法はありますか?
public ObservableRangeCollection<SocialMediaEntity> CurrentSocialMedia { get; } = new ObservableRangeCollection<SocialMediaEntity>();
は、Webサービスのリストを取得し、私は、コレクション内のこれらの要素を保つ:
GetSonInformation().Subscribe((SonInformation) =>
{
CurrentSon = SonInformation.Son;
CurrentSocialMedia.ReplaceRange(SonInformation.SocialMedia);
});
このページでは、トークンが有効な場合に有効にするスイッチコンポーネントがあり、トークンが無効であるか、コレクションにそのようなソーシャルメディアがない場合は有効ではありません。
<Switch Grid.Column="1"
VerticalOptions="Center"
HorizontalOptions="End"
IsToggled="{Binding Path=CurrentSocialMedia,
Converter={StaticResource SocialMediaStatusToBoolConverter},
ConverterParameter={StaticResource youtubeKey}}">
<Switch.Behaviors>
<behaviors:EventHandlerBehavior EventName="Toggled">
<behaviors:InvokeCommandAction
Command="{Binding ToggleYoutubeSocialMediaCommand}"
Converter="{StaticResource SwitchChangeEventArgsConverter}"/>
</behaviors:EventHandlerBehavior>
</Switch.Behaviors>
</Switch>
私が行ったアプローチは、コレクションをリンクし、前に説明したロジックでブール値を返すコンバータを使用することです。
public class SocialMediaStatusToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
IList<SocialMediaEntity> SocialMedias = (IList<SocialMediaEntity>)value;
if (SocialMedias == null || SocialMedias.Count() == 0)
return false;
var socialMedia = SocialMedias.SingleOrDefault(social => social.Type.Equals((string)parameter));
return socialMedia != null && !socialMedia.InvalidToken;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
}
問題はこれが初めてのことです。すべてのアイテムを置き換えるか、別のアイテムを追加してコレクションを更新すると、何も更新されません。
これを行うにはどのようなアプローチが必要か教えてください。前もって感謝します。私はあなたがSwitch
としてごSocialMediaEntity