Postupy: Připojení k metodě
Následující příklad ukazuje, jak vytvořit vazbu na metodu pomocí ObjectDataProvider.
Příklad
V tomto příkladu je třída, TemperatureScale
která má metodu ConvertTemp
, která přebírá dva parametry (jeden z double
a jeden z enum
typu TempType)
a převede danou hodnotu z jednoho teplotního měřítka na jinou. V následujícím příkladu ObjectDataProvider se používá k vytvoření instance objektu TemperatureScale
. Metoda ConvertTemp
je volána se dvěma zadanými parametry.
<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>
Teď, když je metoda k dispozici jako prostředek, můžete vytvořit vazbu k jeho výsledkům. V následujícím příkladu Text jsou vlastnost TextBox a SelectedValue vlastnosti ComboBox vázány na dva parametry metody. To umožňuje uživatelům určit teplotu, ze které se má převést, a měřítko teploty, ze které se má převést. Všimněte si, že BindsDirectlyToSource je nastavena true
, protože jsme vázáni na MethodParameters vlastnost ObjectDataProvider instance, a nikoli vlastnosti objektu zabaleného objektem ObjectDataProvider ( TemperatureScale
objekt).
Poslední ContentLabel aktualizace, když uživatel upraví obsah TextBox nebo výběr ComboBoxsouboru .
<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"/>
Převaděč DoubleToString
přebírá dvojitou hodnotu a převede ho na řetězec ve Convert směru (ze zdroje vazby na cíl vazby, což je Text vlastnost) a převede string
na double
ConvertBack směr.
Jedná se InvalidationCharacterRule
o kontrolu ValidationRule neplatných znaků. Výchozí šablona chyby, což je červené ohraničení kolem TextBox, se zdá upozornit uživatele, když vstupní hodnota není dvojitá hodnota.
Viz také
.NET Desktop feedback
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro