سؤال

لدي تطبيق WinForms مع بعض العناصر التي يتم استضافتها عناصر التحكم في مستخدم WPF (باستخدام ElementHost).

أريد أن أكون قادرًا على ربط خاصية التحكم في WinForm (Button.Enabled) إلى تبعية مخصصة لعناية مستخدم WPF المستضافة (SearchResults.IsAccountSelected).

هل من الممكن ربط نظام.

أيضًا ، بما أنني أعرف system.windows.forms.binding الساعات INotifyPropertyChanged.PropertyChanged الأحداث - هل ستطلق الممتلكات المدعومة من قبل التبعية تلقائيًا هذه الأحداث أو هل سيتعين علي تنفيذ وإدارة إرسال الأحداث المخصصة للممتلكات يدويًا؟

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

المحلول

DependencyObject لا تنفذ INotifyPropertyChanged, ، لذلك إذا كنت تأخذ هذا المسار ، فسيتعين عليك تنفيذ إرسال الأحداث المخصصة للممتلكات يدويًا.

لحسن الحظ DependencyObject لديه OnPropertyChanged الطريقة ، حتى التنفيذ INotifyPropertyChanged في الخاص بك DependencyObjectالطبقة المشتركة تافهة ، على سبيل المثال:

public class MyClass : HeaderedContentControl, INotifyPropertyChanged
{
  protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
  {
    var handler = PropertyChanged;
    if(handler!=null) handler(this, new PropertyChangedEventArgs(e.Property.Name));
    base.OnPropertyChanged(e);
  }
  public event PropertyChangedEventHandler PropertyChanged;
}

أرغب في صدى فكر JSMITH بأن الارتباط مباشرة بخاصية USERCONTROL قد لا يكون أفضل طريق يجب اتخاذه. في معظم الحالات ، يعد MVVM طريقة أفضل للذهاب. هناك استثناءات، بالطبع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top