Stumped: я нахожусь на начальных этапах создания элемента управления планировщика месяца, который должен выполнить некоторое действие пользовательского интерфейса. I Элемент управления при предоставлении даты из привязки ViewModel в XAML. Когда я запускаю код, ViewModel возвращает значение, но PropertyChangeCallBack не запускается. Я сделал то же самое в public class ExtendedDataGrid : DataGrid
элементе управления, и это прекрасно работает, но похоже, что вы должны сделать что-то другое с UserControls. Вот основа моего кода:
public partial class DiaryMonthViewUserControl : UserControl
{
private DateTime _topDate;
public DiaryMonthViewUserControl()
{
InitializeComponent();
}
// Property to get the date from the ViewModel for processing. This will fire and event to set the month we want to display
public static readonly DependencyProperty TheDateProperty = DependencyProperty.Register("TheDate", typeof(DateTime),
typeof(DiaryMonthViewUserControl),
new FrameworkPropertyMetadata(DateTime.Today, OnDatePropertyChanged, null));
public void SetTheCurrentDate(DateTime CurrentDate)
{
_topDate = CurrentDate;
// Like Outlook, whatever date we supply, I want the first top level displayed date for the month
if (_topDate.Day > 1)
_topDate = _topDate.AddDays(-(_topDate.Day-1)); // First day of the month
// Get to the first Monday before the 1st of the month if not on a Monday
while (_topDate.DayOfWeek != DayOfWeek.Monday)
_topDate = _topDate.AddDays(-1);
// I will set the UI here once I have solved this problem.
MakeChangesToTheUIPlease();
}
private static void OnDatePropertyChanged(DependencyObject Source, DependencyPropertyChangedEventArgs e)
{
var control = Source as DiaryMonthViewUserControl;
if (control != null)
control.SetTheCurrentDate((DateTime)e.NewValue);
}
[Bindable(true)]
public DateTime TheDate
{
get { return (DateTime)GetValue(TheDateProperty); }
set { SetValue(TheDateProperty, value); }
}
}
Я также пытался использовать new PropertyChangedCallback(OnDatePropertyChanged)
в качестве параметра, и он все еще не работает.
Моя привязка выглядит следующим образом:
<my:DiaryMonthViewUserControl HorizontalAlignment="Left" Margin="12,12,0,0" x:Name="diaryMonthViewUserControl1"
VerticalAlignment="Top" Height="325" Width="476" TheDate="{Binding Path=CurrentDate}" />
Когда я запускаю код, моя ViewModel разрывается на получателе для CurrentDate, и если я удаляю привязку CurrentDate, то это не так. Проблема в том, что обратный звонок не является увольнением, и, для моей жизни, я не могу понять, почему.
Буду признателен за любую помощь, особенно ссылки на статьи, которые могут освещать эту проблему.