كيفية القيام بما يلي: الربط بأسلوب

يوضح المثال التالي كيفية الربط بأسلوب باستخدام ObjectDataProvider.

مثال

في هذا المثال TemperatureScale هو فئة التي تحتوي على أسلوب ConvertTemp ، الذي يأخذ متغيرين (واحد double وواحد enum نوع TempType) ثم يقوم بتحويل القيمة من نظام درجة حرارة إلى آخر. في المثال التالي, يُستخدم ObjectDataProvider لانشاء مثيل كائن TemperatureScale . يتم استدعاء الأسلوب ConvertTemp بمتغيرين يتم تحديدهما.

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

يتم تحديث Content الخاص بآخر Label عند يقوم المستخدم بتعديل المحتوى TextBox أو اختيار 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"/>

يأخذ المحول DoubleToString نظام ادخال double ويحوله إلى string في اتجاه Convert (من Binding sourceالى Binding Target، الذى هو الخاصيةText) ثم يقوم بتحويل string إلى double في اتجاه ConvertBack.

InvalidationCharacterRule هو ValidationRule يتحقق من الأحرف غير الصالحة. قالب الخطأ الافتراضي الذى هو حد أحمر حول TextBox ، يظهر فقط لإعلام المستخدمين عندما لا تكون قيمة الإدخال قيمة من النوع double.

راجع أيضًا:

المهام

كيفية القيام بما يلي: ربط قائمة التعداد

موارد أخرى

المواضيع الإجرائية لربط البيانات