对ElementName进行绑定以在触发时进行更改

  • 本文关键字:ElementName 绑定 c# wpf
  • 更新时间 :
  • 英文 :


我可能错过了一些东西,因为我认为我所做的一切都是徒劳的。我正在尝试绑定一个值的ElementName,以便在触发时进行更改。

这是代码(它是样式):

<ContentPresenter>
<ContentPresenter.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Tick}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName={Binding FieldNameFocus}}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentPresenter.Style>
</ContentPresenter>

得到这个错误:

Error   2   A 'Binding' cannot be set on the 'ElementName' property of type 'Binding'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.   C:UsersxavierDocumentsVisual Studio 2012ProjectsTest_ValidationTest_ValidationMainWindow.xaml   1   2   Test_Validation

也许我走的路不对。。。我只想让focusedElement在Tick变为True时根据FieldNameFocus进行更改。(两者都在我的dataContext中)

提前谢谢。

您的绑定应该如下所示:Value="{Binding ElementName=YourElementName, Path=PropertyOfTheElement}"

ElementName绑定示例:

<TextBox Name="tbx1" Text="TextBox"/>

<TextBox Name="tbx2" Text="{Binding ElementName=tbx1, Path=Text}"/>

您好,错误很明显,您不能将Binding与ElementName一起使用。当使用ElementName时,您应该提供xaml文件中存在的控件的名称,如前一篇文章所示。由于触发器绑定到布尔值,您可能希望将"ElementName={Binding FieldNameFocus}"替换为"ElementName=controlNameOnWhichYouWantToSetFocus"

例如<Textbox x:Name="ControlIWantFocusOnWhenTickIstrue">然后在您的触发中

<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName="ControlIWantFocusOnWhenTickIstrue"/>

最新更新