我的问题之间的结合如下:双向样资源的属性和运行时对象属性
我已经定义了一个TextBox为在ResourceDictionary中一个工具栏子(X:关键MyToolbar)。当我的应用程序加载时,它将ToolBar正确地放置在Window框架内以及其TextBox。到现在为止还挺好。
当然,我非常希望TextBox能够双向绑定到任何ResourceDictionary中未定义的对象的属性。
更确切地说,当TextBox全部设置在正确的窗口框架中,然后在“Open”命令之后加载某个文件,Deserializer使用该文件以外的值构建DesignerCanvas对象,在我的情况下它是实现INotifyPropertyChanged的类的一个字符串“Token”CLR属性。
这里有一些简化的代码片段。我会留下许多空白为清晰起见:
类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 …
现在,我的两个目标是:只要属性发生变化,我的工具栏上的“静态”TextBox资源就会选取DesignerCanvas的“Token”属性的值。第一次得到一个值,基本上),以及类似的,更重要的是,我希望让DesignerCanvas能够读取我可以手动输入到TextBox中的值,并用它的用户输入文本填充它的Token属性(我想我会选择TextBox'LostFocus事件作为字符串值被传递/绑定到DesignerCanvas'Token'属性上的触发器)。
无论如何,我不确定如何在TextBox的Text属性和DesignerCanvas的Token属性之间建立一个完美的双向(或双向)DataBinding,因为我们有一个静态资源(I不知道静态是否是正确的单词)和另一个动态运行时对象(再次不确定运行时或动态是否是单词)。
我该如何做到这一点?我绝对需要在DesignerCanvas中注册“Token” - DependencyProperty吗?我是否绝对需要在某处定义一个用于DesignerCanvas的XAML(例如,在我的Window1.xaml中,或者与TextBox一起使用了一个dummyS:DesignerCanvas资源)?
帮助感谢!