Как я могу связать статическую переменную в коде 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 });
Вы просто добавляете статическую ссылку в ссылку на экземпляр.