Data binding Silverlight自定义控件和数据绑定不';在WP7中不能正常工作
我正在尝试使用数据绑定创建日历控件Data binding Silverlight自定义控件和数据绑定不';在WP7中不能正常工作,data-binding,windows-phone-7,custom-controls,Data Binding,Windows Phone 7,Custom Controls,我正在尝试使用数据绑定创建日历控件 public partial class Calendar : UserControl { public static readonly DependencyProperty DateProperty = DependencyProperty.Register("Date", typeof(DateTime), typeof(Calendar), null); public
public partial class Calendar : UserControl
{
public static readonly DependencyProperty DateProperty =
DependencyProperty.Register("Date", typeof(DateTime),
typeof(Calendar), null);
public object Date
{
get { return GetValue(DateProperty); }
set
{
SetValue(DateProperty, value);
OnPropertyChanged("Date");
}
}
public Calendar()
{
// Required to initialize variables
InitializeComponent();
DayText.Text = ((DateTime)Date).ToString("dd");
MonthText.Text = ((DateTime)Date).ToString("MMM");
this.Loaded += new RoutedEventHandler(Calendar_Loaded);
this.GotFocus += new RoutedEventHandler(Calendar_Loaded);
}
void Calendar_Loaded(object sender, RoutedEventArgs e)
{
DayText.Text = ((DateTime)Date).ToString("dd");
MonthText.Text = ((DateTime)Date).ToString("MMM");
}
}
但是当我用这个控件创建listbox时,同一个calndar的日期是错误的。我确信通过数据绑定的日期是正确的,但我不明白为什么同一日历显示不同的日期(我注意到这是上一个日历控件的日期)
谢谢您的支持 嗯。。。我们从哪里开始?以下是我注意到的几件事:
- 如果您使用的是依赖项属性,则无需从
属性设置器调用Date
OnPropertyChanged
- dependency属性将类型声明为
,但您的公共公开属性的类型为DateTime
,这要求您将其强制转换到其他位置object
- 如果在更多的情况下调用
,而不是响应Calendar\u Loaded
事件(例如Loaded
事件),那么我建议您将其称为其他名称,或者创建一个具有相关名称的方法(例如UpdateDateParts),并从正确命名的单独事件处理程序中调用它GotFocus
- 在处理日期字符串时使用固定格式说明符无法很好地本地化
日期
依赖项属性的日期部分,而不是手动更新事件处理程序中某些文本块/框的文本
属性。事实上,如果从控件
而不是用户控件
派生,则可以创建并实际执行具有其用户权限的无外观控件接口由themes\generic.xaml中的样式定义,该样式可由控件的用户重新定义
至于为什么日历控件的不同实例中的日期不正确,我们需要查看一些XAML/代码,以了解控件是如何使用和初始化的,从而能够提供更好的答案。但是,我认为上面的问题值得一提,而不是试图在注释中说明