나는 다음과 같이 내가 초기화한다는 ObservableCollectionRange에서 소셜 미디어의 컬렉션을 가지고 :Observable Collection의 Item 속성을 Switch 상태에 바인딩하는 방법은 무엇입니까?
public ObservableRangeCollection<SocialMediaEntity> CurrentSocialMedia { get; } = new ObservableRangeCollection<SocialMediaEntity>();
을 내가 웹 서비스의 목록을 얻을 수 아래 내가 컬렉션에 이러한 요소를 유지 :
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;
}
}
문제는이 작업이 처음 수행되는 것입니다. 모든 항목을 바꾸거나 다른 항목을 추가하여 모음을 업데이트하면 아무 것도 업데이트되지 않습니다.
아무도 내가이 작업을 수행하기 위해 취해야하는 접근 방식을 말할 수 있습니까? 미리 감사드립니다.