سؤال

أحتاج إلى تنفيذ عمليات التوريد المتعددة في C# مباشرة دون استخدام XAML ، أعرف كيفية استخدام ImultivalueConverter في C# ، ولكن ، كيفية القيام:

<MultiBinding Converter="{StaticResource sumConverter}">
  <Binding ElementName="FirstSlider" Path="Value" />
  <Binding ElementName="SecondSlider" Path="Value" />
  <Binding ElementName="ThirdSlider" Path="Value" />
</MultiBinding>

في C#؟

هل كانت مفيدة؟

المحلول

لماذا لا تستخدم XAML؟

يجب أن يعمل الرمز التالي:

MultiBinding multiBinding = new MultiBinding();

multiBinding.Converter = converter;

multiBinding.Bindings.Add(new Binding
{
    ElementName = "FirstSlider",
    Path = new PropertyPath("Value")
});
multiBinding.Bindings.Add(new Binding
{
    ElementName = "SecondSlider",
    Path = new PropertyPath("Value")
});
multiBinding.Bindings.Add(new Binding
{
    ElementName = "ThirdSlider",
    Path = new PropertyPath("Value")
});

نصائح أخرى

هناك طريقتان يمكنك القيام بذلك إلى جانب C# (أفترض أنك لا ترغب فقط في تنفيذ التعددية المتعددة إلى الكود ، وهو حقًا جهد لا قيمة له إذا قمت بذلك ، فإن XAML أفضل دائمًا لذلك)

  1. الطريقة البسيطة هي جعل معالج الأحداث في Valuechanged لمدة 3 شرائح وحساب المبلغ هناك وتعيين الخاصية المطلوبة.

2. ثانياً وأفضل طريقة للتعامل معها في WPF هي جعل نمط التطبيق MVVM. (آمل أن تكون على دراية بـ MVVM). في فئة ViewModel الخاصة بك ، سيكون لديك 3 خصائص مختلفة. وتحتاج إلى خاصية "مجموع" آخر في الفصل. سيتم إعادة تقييم المبلغ كلما تم استدعاء مجموعة الممتلكات الثلاثة الأخرى.

public double Value1
 {
     get { return _value1;}
     set { _value1 = value;  RaisePropertyChanged("Value1"); ClaculateSum(); }
 }
 public double Sum
 {
     get { return _sum;}
     set { _sum= value;  RaisePropertyChanged("Sum"); }
 }
 public void CalculateSum()
 {
   Sum = Value1+Value2+Value3;
 }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top