如何在Ammy中按元素名称绑定值?

时间:2017-01-27 12:05:27

标签: wpf xaml ammy

如何在Ammy中实现以下XAML代码。

<Label>First Name:</Label>
<TextBox x:Name="txtFirstName" Width="100" MaxLength="10" Text="{Binding FirstName}" />
<Label >Last Name:</Label>
<TextBox Width="100">
  <TextBox.Style>
    <Style TargetType="TextBox">
      <Setter Property="Text" Value="{Binding LastName}" />
        <Style.Triggers>
          <DataTrigger Binding="{Binding ElementName=chk, Path=IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Value="True">
             <Setter Property="Text" Value="{Binding ElementName=txtFirstName, Path=Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
          </DataTrigger>
         </Style.Triggers>
     </Style>
 </TextBox.Style>
</TextBox>
<CheckBox x:Name="chk" Content="CopyFirstNameToLast" />

帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

看起来应该是这样的:

Label { "First Name:" }
TextBox "txtFirstName" {
  Width: 100
  MaxLength: 10
  Text: bind FirstName
}

Label { "Last Name:" }
TextBox {
  Width: 90
  Style: Style {
    TargetType: TextBox
    #Setter("Text", bind LastName)

    Triggers: DataTrigger {
      Binding: bind IsChecked from "chk" set [ Mode: TwoWay, UpdateSourceTrigger: PropertyChanged]
      Value: "True"
      Setter {
        Property: "Text" 
        Value: bind Text from "txtFirstName" set [ Mode: TwoWay, UpdateSourceTrigger: PropertyChanged ]
      }
    }
  }
}
CheckBox "chk" { "CopyFirstNameToLast" }

编辑: 顺便说说。如果您不想将现有绑定转换为Ammy,则可以使用XAML语法,即Binding: "{Binding ElementName=chk, Path=IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"