Jak powiązać z metodą
W poniższym przykładzie pokazano, jak powiązać z metodą przy użyciu metody ObjectDataProvider.
Przykład
W tym przykładzie jest to klasa, TemperatureScale
która ma metodę ConvertTemp
, która przyjmuje dwa parametry (jeden double
z i jeden enum
z typów TempType)
i konwertuje daną wartość z jednej skali temperatury na inną. W poniższym przykładzie ObjectDataProvider obiekt jest używany do tworzenia wystąpienia TemperatureScale
obiektu. Metoda jest wywoływana z dwoma ConvertTemp
określonymi parametrami.
<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>
Teraz, gdy metoda jest dostępna jako zasób, możesz powiązać z jej wynikami. W poniższym przykładzie Text właściwość TextBox i SelectedValueComboBox elementu są powiązane z dwoma parametrami metody . Dzięki temu użytkownicy mogą określić temperaturę do konwersji i skalę temperatury, z której ma być konwertowana. Należy pamiętać, że BindsDirectlyToSource parametr jest ustawiony na true
wartość , ponieważ wiążemy się z właściwością ObjectDataProviderMethodParameters wystąpienia, a nie właściwości obiektu opakowanego przez ObjectDataProvider obiekt (TemperatureScale
obiekt).
Ostatnia Content aktualizacja, Label gdy użytkownik modyfikuje zawartość TextBox lub wybór elementu 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"/>
Konwerter DoubleToString
przyjmuje dwukrotnie i zamienia go w ciąg w Convert kierunku (od źródła powiązania do obiektu docelowego powiązania, który jest Text właściwością) i konwertuje string
wartość na double
wartość w ConvertBack kierunku.
Jest InvalidationCharacterRule
to element ValidationRule , który sprawdza nieprawidłowe znaki. Domyślny szablon błędu, który jest czerwonym obramowaniem wokół TextBoxelementu , wydaje się powiadamiać użytkowników, gdy wartość wejściowa nie jest podwójną wartością.
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla