【问题标题】:Two-way-like binding between a Resource's property and a runtime object property资源属性和运行时对象属性之间的双向绑定
【发布时间】: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


    【解决方案1】:

    您是否尝试过使用文本框进行数据绑定...

    <TextBox Text="{Binding Path=Token, Mode=TwoWay}" />
    

    ...那么当您的应用加载 ToolBar 并将其放置在窗口框架中时,请确保它还将 ToolBar 的 DataContext 属性设置为您的 DesignerCanvas 类的实例?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 2018-12-09
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多