WPF에서 바인딩이 작동하는 방법에 대한 질문이 있습니다.WPF에서 바인딩 질문 - 속성과 필드 간의 차이점
이 같은 속성을 가진 뷰 모델이있는 경우 : 그것은 작동
<TextBlock
Text="{Binding Path=TestString, Mode=TwoWay}"
Foreground="Red"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Calibri"
FontSize="24"
FontWeight="Bold">
</TextBlock>
... 여기 새로 바뀐 내용이 없음 :이 같은으로 XAML에 바인딩 경우
private string testString;
public string TestString
{
get { return testString; }
set { testString = value; }
}
을 . 제가 테스트 문자열에서 getter 및 setter를 제거하고이 같은 끝낼 경우
그러나 :
public string TestString;
는 바인딩 똑같은 작동하지 않습니다. 나에게 이것이 왜 발생하는지 전혀 알지 못한다. 왜냐하면 나에게 그것은 커스텀 get과 set을 가진 public 속성에 대한 public 속성과 동등하다.
누군가 나를 위해이 주제에 대해 밝힐 수 있습니까? :)
미리 TYVM!
추신 : 내 구문 강조해 죄송합니다. 코드 블록으로 작업하는 방법을 파악할 수 없습니다.
당신이 말한 것은 사실입니다.그리고 나는 그 일을 끝내었지만, 그 전에는 무슨 일이 일어나고 있는지 이해하려고 벽에 머리를 때리는 데 몇 시간을 잃었습니다. 필자는 getter/setter의 존재 여부가 필드에서 속성으로 변경되는 이유를 알지 못했습니다. 나는 그것이 컴파일 시간에 컴파일러가하는 것이라고 생각한다. 주목 해 주셔서 감사합니다! – Silva
@ Silva 필드 대신 구문을 사용하기 때문에이 작업이 수행됩니다. C# 언어는 속성 선언과 필드 선언을 구별하는 것과 같이 구성됩니다. –
@ Silva : 장래에 "벽에 머리를 때리는 데 시간을 보내는 것"대신 출력 창을 사용하여 바인딩 오류를 디버깅하십시오. 또한 빠른 google 검색을 통해 [이 기사] (http://msdn.microsoft.com/en-us/library/ms752347.aspx) –