2013-10-09 5 views

ответ

3

Да, и вот это полный пример из MSDN:

В этом примере TemperatureScale это класс, который имеет метод ConvertTemp, который принимает два параметра (один двойной и один из перечислимого типа TempType) и преобразует заданное значение из одной шкалы температуры в другую. В следующем примере ObjectDataProvider используется для создания объекта TemperatureScale. Метод ConvertTemp вызывается с двумя указанными параметрами. XAML

<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> 

Теперь, когда метод доступен в качестве ресурса, вы можете связать с его результатами. В следующем примере свойство Text для TextBox и SelectedValue ComboBox привязано к двум параметрам метода. Это позволяет пользователям указывать температуру для преобразования и температурную шкалу для преобразования. Обратите внимание, что BindsDirectlyToSource установлено в true, потому что мы привязываемся к свойству MethodParameters экземпляра ObjectDataProvider, а не к свойствам объекта, обернутого ObjectDataProvider (объект TemperatureScale). Содержимое последней метки обновляется, когда пользователь изменяет содержимое TextBox или выбор ComboBox. XAML

<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"/> 

Преобразователь DoubleToString принимает двойной и превращает его в строку в направлении Преобразовать (от источника привязки к цели привязки, которая является свойством Text) и преобразует строку в двойной в ConvertBack направление. InvalidationCharacterRule - это ValidationRule, который проверяет наличие недопустимых символов. По умолчанию шаблон ошибки, который является красной рамкой вокруг TextBox, уведомляет пользователей, когда входное значение не является двойным значением.

Смежные вопросы