2010-12-15 3 views
1

WPF에 비교적 새로운 기능이므로 확실한 내용이없는 경우 나에게 곰이 붙어 있습니다. 응용 프로그램의 상태를 설명하는 창 하단에 "요약"텍스트 상자를 만드는 중입니다. 내가 바인딩 할 속성에 대한 코드는 다음과 같은 비트 같습니다WPF TextBox가 여러 소스에 바인딩 됨

public String WindowDescription 
{ 
    get { return (radioButton.IsChecked == true ? "A " : "B ") + NameTextBox.Text 
+ " " + (cbRoute.SelectedItem != null? comboBox.SelectedItem.ToString() : ""); } 
} 

을 그리고 난과 같이 컨트롤에 바인딩했습니다

<TextBox IsEnabled="False" Text="{Binding Path=WindowDescription}"/> 

상기 모든 바인딩이 작동하지 않습니다 지금 당장 - WindowDescription에서 참조 된 각 컨트롤에는 기본값이 있지만 그 값도 TextBox를 채우지 않습니다. 내가 말했듯이, WPF에 익숙하지 않기 때문에 아무리 명백해 보이더라도 제 예제에서 빠진 것을 지적 할 수 있습니다. 감사.

+0

yor 앱의 디버그 결과를 살펴보십시오. 바인딩 오류가 있습니까? – Jens

답변

1

몇 가지. 먼저 DataContext가 WindowDescription 속성을 포함하는 클래스의 인스턴스로 설정되어 있는지 확인하십시오.

일반적으로 페이지의 코드 숨김에서이 ​​값을 설정합니다. XAML에서도 설정할 수 있지만 내 대답은 복잡하지 않습니다.

두 번째로, 데이터 바인딩은 속성 값 변경을 자동으로 표시하지 않습니다. 알림 시스템은 WindowDescription 속성을 사용하여 클래스에 설치해야합니다.

Google "INotifyPropertyChanged"와 Bing을 참조하십시오.

그렇지 않으면이 비디오를 확인하십시오!

http://channel9.msdn.com/blogs/mtaulty/silverlight-databinding-ui-to-net-classes

내가 옌스을 추측하고

+0

이것은 해결책을 찾는 열쇠입니다. 나는 각각의 컨트롤에 속성을 묶는 private 클래스를 만들었고,이 속성들의 setter에서 "this.Summary = getSummary()"를 설정하여 문자열을 생성 한 다음 이것을 this.Summary에 배치했습니다. setter는 NotifyPropertyChangedEvent를 작성하여 컨트롤이 변경 될 때마다 텍스트 상자를 업데이트합니다. 감사! –

0

내가 추측해야만한다면 TextBox의 DataContext를 직접 설정하거나 어딘가에 부모를 제공하여 설정하지 않았을 것입니다.

바인딩 경로는 요소 DataContext와 관련이 있으며 기본 DataContext는 null이며 요소 자체 또는 포함 된 Window가 아닙니다.

0

바로, 당신은 모델을 설정 않았다되어 누가? 즉

당신이 모델은 아무것도 나는 우리의 ViewModel의와 MVVM 패턴을 사용하는 일을 우리의 경우에서,
this.DataContext = model; 

. 장기간에 Prism과 Unity와 같은 것을 들여다 볼 수도 있지만 여기에 XAML 페이지의 .cs 파일에 모든 코드를 넣는 것이 그 예입니다.

namespace DataContextTest 

{

공용 부분 클래스 MainWindow를 : 창 { MainWindow를 공용() { this.DataContext =이; MyString = "안녕하세요 ..."; InitializeComponent(); }

public string MyString { get; set; } 

} }

그럼 당신은 다른 게시물에 완료하고 다시 물론, 작업을해야처럼 MyString의에 XAML 바인딩에 -이 시점에서 변화 알림이 없습니다.당신이 원한다면 나는 그 예를 게시 할 수있다. 그러나 나는 당신이 그것을 구글로 만들 수 있고 많은 많은 간단한 예제를 볼 수 있다고 생각한다.

도움이 되었기를 바랍니다.

관련 문제