【发布时间】:2010-10-07 17:33:02
【问题描述】:
我的问题如下:
我已将 TextBox 定义为 ResourceDictionary (x:Key MyToolbar) 中 ToolBar 的子项。当我的应用程序加载时,它会将 ToolBar 及其 TextBox 正确放置在 Window 框架内。到目前为止,一切都很好。
当然,我希望这个 TextBox 能够双向数据绑定到某些对象的属性,这些属性未在任何 ResourceDictionary 中定义。
更准确地说,当文本框全部设置在正确的窗口框架中时,然后,在“打开”命令加载某个文件之后,反序列化器使用来自该文件的值构建 DesignerCanvas 对象,在我的例子中是是实现 INotifyPropertyChanged 的类的字符串“令牌”CLR 属性。
这里有一些简化的代码 sn-ps。为了清楚起见,我会留下很多空白:
类 DesignerCanvas : INotifyPropertyChanged
{
Private string m_token;
Public string Token
{
Get{….
Set{ if (value…)
OnPropertyChanged(“Token”);
}
//notice there is no Constructor other than the default one
}
在 XAML 方面,我有这样的事情:
<ToolBar x:Key=”MyToolbar…..
<TextBox …
现在,我的两个目标是:让我的工具栏上的“静态”文本框资源在属性更改时立即获取 DesignerCanvas 的“令牌”属性的值(即第一次获取值,基本上( ' LostFocus 事件作为字符串值的触发器,该字符串值被传递/绑定到 DesignerCanvas 的“令牌”属性)。
无论如何,我不确定如何在 TextBox 的 Text 属性和 DesignerCanvas 的 Token 属性之间建立一个完美的双向(或类似双向)DataBinding,因为我们有一个静态资源(I' m 不确定静态是否是正确的词),以及另一个动态运行时对象(再次不确定运行时或动态是否是词)。
我如何实现这一目标?我是否绝对需要在 DesignerCanvas 中注册一个“令牌”- DependencyProperty?我是否绝对需要在某处定义 DesignerCanvas 的 XAML(例如在我的 Window1.xaml 或虚拟 s:DesignerCanvas 资源以及 TextBox 中)?
帮助表示赞赏!
【问题讨论】:
标签: wpf data-binding xaml resources