Как я могу связать статическую переменную в коде wpf позади?

У меня есть статический класс 'MappingService'.

public  class MappingService : INotifyPropertyChanged
{
    static readonly MappingService _Instance = new MappingService();
    public static MappingService Instance
    {
        get { return _Instance; }
    }

    public Efficiency Source { get; set; }
}

и создать ComboBox в коде позади.
Я хочу связать ItemsSource MappingService.Instance.Source в коде позади.

comboBox.SetBinding(ItemsControl.ItemsSourceProperty, new Binding("MappingService.Instance.Source") { Mode = BindingMode.TwoWay });

но я не могу получить доступ к MappingService.Instance.Source.

Пожалуйста, помогите мне. благодарю вас.

2 ответа

Решение

Вот как вы можете связать:

var propertyPath = new PropertyPath("Source");
var binding = new System.Windows.Data.Binding
{
     Path = propertyPath,
     Mode = BindingMode.TwoWay,
     Source = MappingService.Instance
};
BindingOperations.SetBinding(
    comboBox,
    System.Windows.Controls.ItemsControl.ItemsSourceProperty,
    binding);

Это один из простых способов сделать это. Возможно, есть лучшие варианты, чем это зависит от вашего дизайна. Попробуй это

  public  class MappingService : INotifyPropertyChanged
    {
    static readonly MappingService _Instance = new MappingService();
    public static MappingService Instance
   {
    get { return _Instance; }
    }

    public MappingService BindingObject 
    {
    get { MappingService._Instance; }
    }
     public Efficiency Source { get; set; }
   }

И твой код xaml.

  comboBox.SetBinding(ItemsControl.ItemsSourceProperty, new Binding("BindingObject.Source") { Mode = BindingMode.TwoWay });

Вы просто добавляете статическую ссылку в ссылку на экземпляр.

Другие вопросы по тегам