【问题标题】:WPF Adding textblock on an item and binding it to a textboxWPF 在项目上添加文本块并将其绑定到文本框
【发布时间】:2010-10-20 23:34:12
【问题描述】:

我有一个图表设计器程序,当用户右键单击形状并在属性窗口中写入形状名称时,我想将文本添加到形状(这些是路径对象)。我将上下文菜单属性添加到形状,当用户单击上下文菜单中的“属性”时,会打开一个包含文本框和按钮的新窗口。我可以向形状添加文本块,但无法将属性窗口中的文本框绑定到形状中的文本块。我想要的是当用户在属性窗口的文本框中输入文本并单击“确定”按钮时,形状上的文本块会更改为用户输入的文本。

谢谢。

【问题讨论】:

    标签: c# wpf diagram


    【解决方案1】:

    您可以使用 ElementName 绑定将一个控件绑定到另一个:

    <TextBlock Text="{Binding Text, ElementName=TextBoxInPropertiesWindow}" />
    

    但在这种情况下,这可能不是您想要的,因为听起来属性窗口和文本框很快就会消失和/或被重新用于编辑其他图表元素。

    因此,您确实需要考虑将文本框和文本块绑定到底层数据模型/视图模型。这样,文本框可以更新模型(文本框销毁后仍会保留),然后文本块会随着模型的变化而更新。

    【讨论】:

    • 首先,感谢您的关注。但我不知道如何“将文本框和文本块绑定到底层数据模型/视图模型”。你能解释一下吗?
    • 你有某种图表的底层数据模型,比如一个带有 Shape 对象集合的图表对象。 UI 上的每个 TextBlock 都绑定到一个 Shape.Text。现在在图表上提供一个 SelectedShape 属性(如果不合适,则在视图模型中),在选择更改时更新它,并将 TextBox 绑定到 SelectedShape.Text。希望现在这更有意义!
    • 我已经做到了。这需要一点时间,但最终它奏效了。再次感谢您的帮助。
    【解决方案2】:

    将选定形状的数据上下文绑定到窗口或控制器上名为 SelectedItem 的属性,然后将属性窗口的数据上下文绑定到 SelectedItem。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 2013-08-11
      • 2011-07-17
      • 2020-05-13
      • 1970-01-01
      • 2016-02-12
      • 2011-02-10
      相关资源
      最近更新 更多