Wpf 未使用PropertyChanged通知更新按钮内容

Wpf 未使用PropertyChanged通知更新按钮内容,wpf,button,binding,inotifypropertychanged,Wpf,Button,Binding,Inotifypropertychanged,我只是想做的是,当用户点击按钮时,它的内容应该根据编码而改变。这是代码。我已经尝试了这两种方式,代码隐藏方式和XAML绑定方式。但它不起作用 <Button x:Name="Header" Content="{Binding listHeader}" Click="HeaderClick"/> private string listHeader; public string ListHeader { get { return listHeader; } set

我只是想做的是,当用户点击按钮时,它的内容应该根据编码而改变。这是代码。我已经尝试了这两种方式,代码隐藏方式和XAML绑定方式。但它不起作用

<Button x:Name="Header" Content="{Binding listHeader}"  Click="HeaderClick"/>

private string listHeader;
public string ListHeader
{
    get { return listHeader; }
    set
    {
        listHeader = value;
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs("listHeader"));
        }
    }
}

public Calendar()
{
    this.selectedDate = DateTime.Now;
    this.ListHeader = selectedDate.ToString("MMMM");    
}

private void HeaderClick(object sender, RoutedEventArgs e)
{
    switch (StateOfList)
    {
        case StatesOfList.ListOfDates:
            {
                this.listHeader = selectedDate.Year.ToString();                    
                this.StateOfList = StatesOfList.ListOfMonths;
            }
            break;
        case StatesOfList.ListOfMonths:
            {

                this.FillList(ListDataTypes.Years);
                this.StateOfList = StatesOfList.ListOfYears;
            }
            break;
        case StatesOfList.ListOfYears:
            {

            }
            break;                
    }
}

私有字符串列表头;
公共字符串列表头
{
获取{return listHeader;}
设置
{
listHeader=值;
if(PropertyChanged!=null)
{
PropertyChanged(这是新的PropertyChangedEventArgs(“listHeader”);
}
}
}
公历()
{
this.selectedDate=DateTime.Now;
this.ListHeader=selectedDate.ToString(“MMMM”);
}
私有void HeaderClick(对象发送方,路由目标)
{
开关(状态列表)
{
案例状态列表。列表日期:
{
this.listHeader=selectedDate.Year.ToString();
this.StateOfList=StatesOfList.ListOfMonths;
}
打破
案例状态列表。列表月份:
{
这个.FillList(ListDataTypes.Years);
this.StateOfList=StateOfList.ListOfYears;
}
打破
案例状态列表。年份列表:
{
}
打破
}
}

您最好使用属性名(ListHeader)而不是变量名(ListHeader)绑定内容。所以在代码中更改这两行

<Button x:Name="Header" Content="{Binding ListHeader}"  Click="HeaderClick"/>

你给出的解决方案不起作用。我完全惊讶于它为什么不起作用。也做这个改变吧。this.ListHeader=selectedDate.Year.ToString();嘿一切正常。我的意思是我试着用visual studio调试它,我已经检查了属性的所有e值10次。当我点击它时,它的值也显示在2013年。但我不知道为什么它不呈现。我想我在回答中写这篇文章是为了用listHeader替换绑定中的listHeader。嘿,Nitesh,请帮助我。如果你愿意,我可以给你发文件。我不知道什么不起作用。帮助我。它不起作用。
PropertyChanged(this, new PropertyChangedEventArgs("ListHeader"));