Я хочу настроить календарь 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);
}
Сценарий в моей голове
- Вызовите RaisePropertyChange (), поскольку значение ViewModelDate изменяется нажатием кнопки View.
- ViewModelDateподключен к Bind CurrentDate для изменения значения CurrentDate.
CurrentDate подключен к CurrentDateProperty и вызывает OnCurrentDatePropertyChanged ().
Буду признателен, если вы дадите мне знать, что япропущено.