Cara: Mengikat ke Metode
Contoh berikut menunjukkan cara mengikat ke metode menggunakan ObjectDataProvider.
Contoh
Dalam contoh ini, TemperatureScale
adalah kelas yang memiliki metode ConvertTemp
, yang mengambil dua parameter (salah satu dari double
dan salah satu jenis enum
TempType)
dan mengonversi nilai yang diberikan dari satu skala suhu ke skala suhu lainnya. Dalam contoh berikut, digunakan ObjectDataProvider untuk membuat instans TemperatureScale
objek. Metode ConvertTemp
ini dipanggil dengan dua parameter yang ditentukan.
<Window.Resources>
<ObjectDataProvider ObjectType="{x:Type local:TemperatureScale}"
MethodName="ConvertTemp" x:Key="convertTemp">
<ObjectDataProvider.MethodParameters>
<system:Double>0</system:Double>
<local:TempType>Celsius</local:TempType>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<local:DoubleToString x:Key="doubleToString" />
</Window.Resources>
Sekarang setelah metode tersedia sebagai sumber daya, Anda dapat mengikat hasilnya. Dalam contoh berikut, Text properti dan TextBox SelectedValue dari ComboBox terikat ke dua parameter metode. Ini memungkinkan pengguna untuk menentukan suhu yang akan dikonversi dan skala suhu yang akan dikonversi. Perhatikan bahwa BindsDirectlyToSource diatur ke true
karena kita mengikat ke MethodParameters properti ObjectDataProvider instans dan bukan properti objek yang dibungkus oleh ObjectDataProvider ( TemperatureScale
objek).
Content Dari pembaruan terakhir Label ketika pengguna memodifikasi konten TextBox atau pilihan ComboBox.
<Label Grid.Row="1" HorizontalAlignment="Right">Enter the degree to convert:</Label>
<TextBox Grid.Row="1" Grid.Column="1" Name="tb">
<TextBox.Text>
<Binding Source="{StaticResource convertTemp}" Path="MethodParameters[0]"
BindsDirectlyToSource="true" UpdateSourceTrigger="PropertyChanged"
Converter="{StaticResource doubleToString}">
<Binding.ValidationRules>
<local:InvalidCharacterRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
<ComboBox Grid.Row="1" Grid.Column="2"
SelectedValue="{Binding Source={StaticResource convertTemp},
Path=MethodParameters[1], BindsDirectlyToSource=true}">
<local:TempType>Celsius</local:TempType>
<local:TempType>Fahrenheit</local:TempType>
</ComboBox>
<Label Grid.Row="2" HorizontalAlignment="Right">Result:</Label>
<Label Content="{Binding Source={StaticResource convertTemp}}"
Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2"/>
Pengonversi DoubleToString
mengambil ganda dan mengubahnya menjadi string ke Convert arah (dari sumber pengikatan ke target pengikatan, yang merupakan Text properti) dan mengonversi menjadi string
ke double
ConvertBack arah.
InvalidCharacterRule
adalah ValidationRule yang memeriksa karakter yang tidak valid. Templat kesalahan default, yang merupakan batas merah di TextBoxsekitar , tampaknya memberi tahu pengguna ketika nilai input bukan nilai ganda.
Lihat juga
.NET Desktop feedback