2016-03-30 1 views
0

私は静的クラス 'MappingService'を持っています。wpfコードの静的変数を後でバインドする方法はありますか?

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にアクセスできません。

私を助けてください。 ありがとうございます。

答えて

1

ここにあなたがバインドする方法:

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); 
+0

ありがとう、私は忘れていた 'Source = MappingService.Instance' – user3214694

1

これは簡単な方法です。これよりも優れたオプションは、あなたのdeisgnに依存している可能性があります。試してみてください

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 }); 

静的リファレンスをインスタンス参照内に追加するだけです。

+0

を、私はポイントを理解することはできません。 combobox.SetBinding(ItemsControl.ItemsSourceProperty、新しいバインディング( "MappingService.Instance.Source"){Mode = BindingMode.TwoWay});それは仕事ではありません。 – user3214694

+0

私はそれを得ました。それは仕事です。 – user3214694

関連する問題