bugfix> xaml > 投稿

TextBlockにバインドされたobl.name。 XAMLのコード

<StackPanel Background="Gray" Orientation="Vertical">
<TextBlock Text="{x:Bind obl.name, Mode=TwoWay}" Foreground="Aquamarine" />
<Button Content="click" Click="Button_Click"/>
</StackPanel>

.Csファイルのコード

public MainPage()
    {
        this.InitializeComponent();
        obl = new Class1();
        DataContext = obl;
    }
    public Class1 obl { get; set; }
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        obl.name = "haiiii";
    }

クラス1

public class Class1
{
    public string name { get; set; }
}

バインドされた値はUIに表示されません。どうして ?

回答 1 件
  • class1 というプロパティにテキストをバインドする場合   INotifyPropertyChanged を実装する必要があります  インターフェイスとプロパティの設定が変更されました。

    public class Class1 : INotifyPropertyChanged
    {
        private string _name;
        public string name
        {
            get => _name;
            set
            {
                _name = value;
                OnPropertyChanged();
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
        [NotifyPropertyChangedInvocator]
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    
    

    しかし、プロパティとして、プロパティ name   Name という名前を付ける必要があります  PascalCasingの場合。

    Thx @thezapper

あなたの答え