我正在第一次认真涉足 Prism(Unity)。我有一个带有工具栏控件的模块,它被(正确地)加载到它应该加载的区域中。此工具栏是一个列表框,其中 ItemsSource 数据绑定到其 ViewModel 上的 ToolButtons 属性,构造函数实例化三个 ToolButtons 并将其添加到 ToolButtons 集合。
我的 ToolButton 类具有三个自定义 DependencyProperties:Title(字符串)、ButtonFace(图像)、ActiveDocumentCount(int)。样式由模块中的资源字典负责,其中包含样式和关联的 ControlTemplate。我已经对属性进行了数据绑定,但是没有任何值或图像通过 TemplateBinding 显示(但是样式中的其他元素是)。
我正在尝试调试数据绑定,但无济于事。我在“输出”窗口中没有得到任何相关的消息,并且该博客中的第二和第三个建议也没有产生任何输出。我认为,如果我能得到详细的(即 PresentationTraceSources.TraceLevel=High)输出,我就能弄清楚数据绑定前端发生了什么。
编辑:
工具按钮类
public class ToolButton : Button
{
public ToolButton()
{
//DefaultStyleKeyProperty.OverrideMetadata(typeof(ToolButton), new FrameworkPropertyMetadata(typeof(ToolButton)));
}
public Image ButtonFace
{
get { return (Image)this.GetValue(ButtonFaceProperty); }
set { this.SetValue(ButtonFaceProperty, value); }
}
public static readonly DependencyProperty ButtonFaceProperty =
DependencyProperty.Register("ButtonFace", typeof(Image), typeof(ToolButton), new PropertyMetadata(null));
public string Title
{
get { return (string)this.GetValue(TitleProperty); }
set { this.SetValue(TitleProperty, value); }
}
public static readonly DependencyProperty TitleProperty =
DependencyProperty.Register("Title", typeof(string), typeof(ToolButton), new PropertyMetadata(""));
public int OpenRecordCount
{
get { return (int)this.GetValue(OpenRecordCountProperty); }
set { this.SetValue(OpenRecordCountProperty, value); }
}
public static readonly DependencyProperty OpenRecordCountProperty =
DependencyProperty.Register("OpenRecordCount", typeof(int), typeof(ToolButton), new PropertyMetadata(null));
}