1

私のビュー(InformationView)はInformationViewModelにバインドされており、ネストされたクラスを使用して現在のバンクを維持しています

私のネストされたクラス:

public class MainController : NotificationObject
{
    public MainController()
    {
        Initialize();
    }

    private void Initialize()
    {
        // TODO implement 
    }


    public static MainController Instance
    {
        get { return Nested.instance; }
    }

    private BankModel _currentBank;

    public BankModel CurrentBank
    {
        get { return _currentBank; }
        set
        {
            if (_currentBank== value)
            {
                return;
            }

            _currentBank= value;
            RaisePropertyChanged(() => CurrentBank);
        }
    }

    private class Nested
    {
        static Nested()
        {
        }

        internal static readonly MainController instance = new MainController();
    }
}

私のBankModel:

    private string _name ="test";

    public string Name
    {
        get
        {
            return _name;
        }

        set
        {
            if (_name == value)
            {
                return;
            }

            _name= value;
            RaisePropertyChanged(()=>Name);
        }
    }

私のXAML

xmlns:Controller="clr-namespace:MyProject.Controller" 
/****/
<Label Content="{Binding Controller:MainController.CurrentBank.Name}"/>

まず、ラベルに「テスト」が表示されません。実行すると、この値が変更され、常にラベルが空になります。正しいアプローチでこれを行う方法

4

1 に答える 1

3

バインディング宣言では、「パス」と「ソース」の組み合わせを使用する必要があります。また、静的メンバーにアクセスしているという事実をバインド エンジンに警告する必要があります。

<Label Content="{Binding Source={x:Static Controller:MainController.Instance}, Path=CurrentBank.Name}" />
于 2013-02-07T15:03:21.967 に答える