我的问题如下:
我已在TextDictionary(x:Key MyToolbar)中将TextBox定义为ToolBar的子级。当我的应用程序加载时,它会将ToolBar与其TextBox一起正确放置在Window框架内。到现在为止还挺好。
当然,我希望TextBox与某些对象的属性是双向数据绑定,这些属性未在任何ResourceDictionary中定义。
更确切地说,当TextBox全部设置在正确的窗口框架中,然后,在“打开”命令后加载某个文件时,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 Event作为传递/绑定到DesignerCanvas'“Token”属性的字符串值的触发器。)
无论如何,我不确定如何在TextBox的Text属性和DesignerCanvas的Token属性之间建立一个完美的双向(或双向)DataBinding,因为我们有一个静态资源(I'我不确定静态是否是正确的单词)和另一个动态运行时对象(再次不确定运行时或动态是否是单词)。
我如何实现这一目标?我是否绝对需要在DesignerCanvas中注册“令牌” - DependencyProperty?我是否绝对需要在某处定义DesignerCanvas的XAML(例如在我的Window1.xaml或虚拟s:DesignerCanvas资源以及TextBox中)?
帮助表示赞赏!
答案 0 :(得分:0)
您是否尝试过使用文本框进行数据绑定...
<TextBox Text="{Binding Path=Token, Mode=TwoWay}" />
...然后当您的应用加载并将ToolBar放置在窗口框架中时,请确保它还将ToolBar的DataContext属性设置为DesignerCanvas类的实例?