【发布时间】:2012-09-30 21:06:31
【问题描述】:
我想要一个按钮来将在列表框中选择的文本插入到文本框中。我正在尝试为此使用命令,我将当前插入符号索引作为命令参数传递,然后命令处理程序将在此索引处插入选定的文本。可能吗?我不知道如何在 xaml 中引用 aTextBox.CaretIndex
【问题讨论】:
我想要一个按钮来将在列表框中选择的文本插入到文本框中。我正在尝试为此使用命令,我将当前插入符号索引作为命令参数传递,然后命令处理程序将在此索引处插入选定的文本。可能吗?我不知道如何在 xaml 中引用 aTextBox.CaretIndex
【问题讨论】:
这个问题和this question类似。
关键是绑定属性 CaretIndex 是没有用的,因为它不是 DependencyProperty,因为您不会收到值更改的通知。具体来说,如果您直接绑定到 CaretIndex 程序将编译,但数据绑定中的 CaretIndex 的值将始终为 0,即使您在文本框中移动光标也是如此。
您可以改为创建一个可以绑定的附加属性,而不是 CaretIndex。 提出了一个解决方案here,其中添加了一个附加属性以绑定 SelectedText 属性,该属性也不是依赖项属性。这个想法是一样的。
【讨论】:
您可以按名称绑定到TextBox,并将CaretIndex 赋予Path 属性
<TextBox Name="MyTextBox" Text="My Text" />
<Button Command="{Binding MyCommand}" CommandParameter="{Binding ElementName=MyTextBox Path=CaretIndex}"/>
【讨论】:
{Binding} 中使用双引号,因为它们是无效的。