2013-07-22 2 views
0

간단히 말해서 사용자가 버튼을 클릭하면 해당 내용이 코딩에 따라 변경되어야합니다. 여기에 코드가 있습니다. 나는 코드 바인딩 방식과 XAML 바인딩 방식을 모두 시도했다. 하지만 작동하지 않습니다.버튼 내용이 PropertyChanged 알림으로 업데이트되지 않았습니다.

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

답변

1

당신은 더 나은 속성 이름 (ListHeader)이 아닌 변수 이름 (listHeader)와 콘텐츠를 결합한다. 따라서 코드에서이 두 줄을 변경하십시오.

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

PropertyChanged(this, new PropertyChangedEventArgs("ListHeader")); 
+0

이 작동하지 않습니다 준 솔루션입니다. 나는 그것이 왜 효과가 없는지에 대해 놀랍다. –

+0

이렇게 변경하십시오. this.ListHeader = selectedDate.Year.ToString(); – Nitesh

+0

안녕하세요! 모든 것이 올바르게 작동합니다. 내 말은 Visual Studio로 디버깅을 시도했는데 10 번 속성의 모든 e 값을 검사했음을 의미합니다.

관련 문제