Mar*_*ijn 3 c# wpf xaml binding multidatatrigger
谁能告诉我如何绑定到Usercontrol的元素?
我试图使用与IDataErrorInfo一起使用的数据触发器来禁用/启用按钮。
所以当元素在同一视图上时,我通常这样做
<Button Name="AddEditButton" Content="{Binding ButtonContent}" Command="{Binding AddCustomerCommand}" HorizontalAlignment="Center" Margin="0 10" >
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="false" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=CustomerFirstNameTextBox, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=CustomerLastNameTextBox, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=CustomerEmailTextBox, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=CustomerPhoneTextBox, Path=(Validation.HasError)}" Value="false" />
<Condition Binding="{Binding ElementName=CustomerCellphoneTextBox, Path=(Validation.HasError)}" Value="false" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="true" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)
但是现在我需要添加一个条件,该条件绑定到我的视图正在使用的Usercontrol(AdressControl)上的控件。
我希望可以像这样轻松访问usercontrol的元素
<Condition Binding="{Binding ElementName=AddressControl , Path=StreetTextBox.(Validation.HasError)}" Value="false" />
Run Code Online (Sandbox Code Playgroud)
但无济于事。任何帮助将非常感激
本FindAncestor应正确解决该房产
<Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type AddressControl}}, Path=StreetTextBox.(Validation.HasError)}" Value="false" />
Run Code Online (Sandbox Code Playgroud)
这样就可以通过可视化树进行查找,以查找类型AddressControl并解析该属性。
| 归档时间: |
|
| 查看次数: |
2778 次 |
| 最近记录: |