Как связать объект, который не является Свойством Независимости в MVVM - PullRequest
0 голосов
/ 24 октября 2019

Я хочу настроить календарь jarloo.Calendar в Интернете с моим проектом, но он не работает, как я думал.

Я пытался применить его в форме MVVM, но OnChange из DependencyPropertyне вызывается нормально.

вот мой код.


View.xaml

<UserControl xmlns:calendar="clr-namespace:Jarloo.Calendar;assembly=Jarloo.Calendar"
             DataContext="{Binding SomeViewResource, Source={StaticResource Locator}}" 
    <Grid>
        <Button Command="{Binding ViewModelCommand}"/>
        <calendar:Calendar CurrentDate="{Binding ViewModelDate}"/>
    </Grid>
</UserControl>

ViewModel.cs

        private DateTime _viewModelDate;

        public DateTime ViewModelDate
        {
            get => _viewModelDate;
            set
            {
                _viewModelDate= value;
                RaisePropertyChanged();
            }
        }

        public RelayCommand ViewModelCommand { get; set; }

        public ViewModel(){
            ViewModelCommand= new RelayCommand(() =>
            {
                ViewModelDate= DateTime.Now;
            });
        }

Календарь.cs

        private static readonly DependencyProperty CurrentDateProperty = DependencyProperty.Register(
            "CurrentDate",
            typeof (DateTime),
            typeof (Calendar),
            new FrameworkPropertyMetadata(
                new PropertyChangedCallback(OnCurrentDatePropertyChanged)));

        private static void OnCurrentDatePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            MessageBox.Show("Property Changed");
            // I want some work here.
        }

        public DateTime CurrentDate
        {
            get => (DateTime) GetValue(CurrentDateProperty);
            set => SetValue(CurrentDateProperty, value);
        }

Сценарий в моей голове

  1. Вызовите RaisePropertyChange (), поскольку значение ViewModelDate изменяется нажатием кнопки View.
  2. ViewModelDateподключен к Bind CurrentDate для изменения значения CurrentDate.
  3. CurrentDate подключен к CurrentDateProperty и вызывает OnCurrentDatePropertyChanged ().

    Буду признателен, если вы дадите мне знать, что япропущено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...