工作中,写自定义控件,遇到一个奇怪的问题。场景是这样的:一个ListBox或其他ItemsControl显示数据列表,下方一个TextBlock显示列表中选定的值,代码大概是这样的(做了简化):
BorderThickness={TemplateBinding BorderThickness}
VerticalContentAlignment=TopMonth是后台定义的依赖属性,现在的问题是,ListBox拿到了数据(1到12个月),但下方的TextBlock却显示不出列表的SelectedValue,必须把它的代码换成这样才行:
DependencyProperty.Register(
MonthString,
typeof(String),
typeof(ControlTest),newFrameworkPropertyMetadata(DateTime.Now.Month.ToString()));publicString MonthString{get{returnGetValue(MonthStringProperty).ToString(); }set{ SetValue(MonthStringProperty, value); }}前台Xaml如下:
BorderThickness={TemplateBinding BorderThickness}
VerticalContentAlignment=Top果然,数据能显示了: