0

ユーザーコントロールのリストボックスがあり、各ユーザーコントロールは境界付けられたデータのプロパティを表示し、カスタムコントロールがデータを変更するとコレクションをカスタムコントロールにバインドし、UI が更新されていないコードは次のとおりです。

ObservableCollection<Subscription> subscriptions = new ObservableCollection<Subscription> SubscriptionRepository.GetSubscriptions());
            SubListBox.ItemsSource = subscriptions;

xaml:

<DataTemplate x:Key="MyDataTemplate">
            <UserControls:SubscriptionUC />
</DataTemplate>

<ListBox x:Name="SubListBox" ItemTemplate="{StaticResource MyDataTemplate}">
</ListBox>

ユーザーコントロール:

    <TextBlock Text="{Binding Path=DaysAttended}" />
<cc:CustomControl SubscriptionSource="{Binding Path=SubscriptionDays,Mode=TwoWay}" />

購読クラス :

public class Subscription : INotifyPropertyChanged
    {
        public int SubscriptionTypeId { get; set; }

        public DateTime StartDate { get; set; }

        public DateTime EndDate { get; set; }

        public ObservableCollection<SubscriptionDay> SubscriptionDays { get; set; }

        public int DaysAttended { get { return SubscriptionDays.Count(d => d.Attended == true); } }
public void DayChanged()
        {
            RaisePropertyChanged("SubscriptionDays");
            RaisePropertyChanged("DaysAttended");
        }
 }

SubscriptionDay プロパティが変更され、それが呼び出されても DaysAttended が更新されない場合、SubscriptionDay クラスから DayChanged() が呼び出されます。

4

1 に答える 1

0

また、DaysAttendedプロパティのセッターが必要です双方向バインディングの場合、プロパティにゲッターとセッターが必要です。これが役立つことを願っています

于 2013-02-03T13:51:51.277 に答える