web-dev-qa-db-ja.com

WPFデータバインディングラベルコンテンツ

データバインディングを使用して簡単なWPFアプリケーションを作成しようとしています。コードは問題ないように見えますが、プロパティを更新するときにビューが更新されません。これが私のXAMLです。

<Window x:Class="Calculator.MainWindow"
        xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml" xmlns:calculator="clr-namespace:Calculator"
        Title="MainWindow" Height="350" Width="525"
        Name="MainWindowName">
    <Grid>
        <Label Name="MyLabel" Background="LightGray" FontSize="17pt" HorizontalContentAlignment="Right" Margin="10,10,10,0" VerticalAlignment="Top" Height="40" 
               Content="{Binding Path=CalculatorOutput, UpdateSourceTrigger=PropertyChanged}"/>
    </Grid>
</Window>

コードビハインドは次のとおりです。

namespace Calculator
{
    public partial class MainWindow
    {
        public MainWindow()
        {
            DataContext = new CalculatorViewModel();
            InitializeComponent();
        }
    }
}

これが私のビューモデルです

namespace Calculator
{
    public class CalculatorViewModel : INotifyPropertyChanged
    {
        private String _calculatorOutput;
        private String CalculatorOutput
        {
            set
            {
                _calculatorOutput = value;
                NotifyPropertyChanged();
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            var handler = PropertyChanged;
            if (handler != null)
               handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

ここに何が欠けているのかわかりませんか? o.O

14
HansElsen

CalculatorOutputにはゲッターがありません。ビューはどのように値を取得する必要がありますか?プロパティも公開する必要があります。

public String CalculatorOutput
{
    get { return _calculatorOutput; }
    set
    {
        _calculatorOutput = value;
        NotifyPropertyChanged();
    }
}
17
user1522991