0

ソースを変更したときに、ビューに変更を反映するにはどうすればよいですか。これが私のコードです。モデル:

public class ExecutionMode
{
    private List<DayItem> _dayItems = new List<DayItem>();

    public enum TypeMode
    {
        None,
        Once,
        Daily,
        Weekly
    }

    public TypeMode Mode { get; set; }
    public DateTime? ExecutionTime { get; set; }
    public DateTime? ExecutionDate { get; set; }
    public List<DayItem> DayItems { get { return _dayItems; } set { _dayItems = value; } }
}
public class ProfileRecord
    {
        private ExecutionMode _mode = new ExecutionMode();
        public ExecutionMode ExecutionMode { get { return _mode; } set { _mode = value; } }
    }

ビューモデル

    public class NewProfileViewModel : INotifyPropertyChanged
    {private ProfileRecord _record = new ProfileRecord();
public ProfileRecord Record { get{return _record; } set{_record=value; OnPropertyChanged("Record")}}

XAML:

<toolkit:TimePicker Header="Time of execution:" Margin="12,0,70,0" Value="{Binding ProfileRecord.ExecutionMode.ExecutionTime, Mode=TwoWay}" Visibility="{Binding ElementName=lpickerExecutionModes, Path=SelectedItem, Converter={StaticResource VisibilityConvert}, ConverterParameter=Once|Daily|Weekly}" />

コード Record.ExecutionTime = Time のどこかに設定すると、ビューに反映されません。だから私は尋ねています。モデルにも NotifyPropertyChanged を実装する必要がありますか? ありがとう

4

1 に答える 1

1

問題を解決するには、次の 2 つの方法があります。

  1. INotifyPropertyChangedModel クラスに実装する

  2. Model オブジェクトから必要なすべてのプロパティをプロパティとしてマップし、それらのプロパティViewModelに実装INotifyPropertyChangedします。

特にモデルが非常に巨大で、多くのプロパティがあり、これらすべてのプロパティがビューで使用される場合は、最初のアプローチを好みます。

于 2013-03-13T08:43:20.907 に答える