2016-06-21 3 views
1

응용 프로그램을 만들고 사용자가 새 창에서 특정 항목을 클릭하면 개체가 입력 매개 변수로 전달됩니다. 창 CS 파일 내부새 창에서 텍스트 상자 집합에 개체 속성을 바인딩하는 방법

private void GridItem_MouseUp(object sender, MouseButtonEventArgs e) 
{ 
    Grid item = (Grid)sender; 
    int itemId = Convert.ToInt32(item.Tag) - 1; 
    Bill_Overview BO = new Bill_Overview(Bills[itemId]); 
    BO.ShowDialog(); 
    BO.Owner = this; 
} 

이있다 :

public DBConnection.Bill Bill { get; set; } 

public Bill_Overview(DBConnection.Bill bill) 
{ 
    InitializeComponent(); 
    Bill = bill; 
} 

내가 속성 빌의 각 속성을 결합하고자하는 Bill_Overview 윈도우의 WPF 내부

하지만 무엇이든 나는 그것을 시도했습니다 작동하지 않습니다. 나는 이것을 현재의 셋업으로 가지고 있는데, 이것은 효과가 없다.

<Grid DataContext="{Binding Bill}"> 
    <TextBox Margin="0,28,0,185" Text="{Binding Path=Payer, Mode=TwoWay}" /> 
    ... 
</Grid> 

누구든지 해결 방법을 알고 있습니까? 나는 해결책을 찾기 위해 노력했지만 꽤 효과가없는 것 같다.

건배!

+0

속성이 변경되면 바인딩 엔진에 알리지 않으므로보기가 업데이트해야한다는 것을 알지 못합니다. 주제에 관해 읽어 보시길 권합니다. 따라서 빠른 수정 대신 근본 원인을 이해할 수 있습니다. –

+0

나는 이것이 INotifyPropertyChanged에 대해 뭔가있는 것을 기억 하나? 그러나 나는 그것을 (아직) 구현하는 방법을 모른다. 그러나 Eyal에 의해 주어진 해결책은 트릭을하고 창문의 목적을 수행합니다. – DethoRhyne

+0

정확하게 요점을 말하십시오. 이유를 완전히 이해하지 못하는 동안이 특정 문제를 해결합니다. 데이터 바인딩과 WPF에 대한 실제적인 접근 방식을 시도해야합니다 (온라인 튜토리얼이 많이 있습니다). –

답변

2

C#으로

DataContext="{Binding Bill}" 

그런 다음 XAML에서 DataContext를 할당 식을 제거, 이렇게 :

public DBConnection.Bill Bill { get; set; } 

public Bill_Overview(DBConnection.Bill bill) 
{ 
    InitializeComponent(); 
    Bill = bill; 
    DataContext = bill; 
} 

(DataContext를 그렇게 윈도우의 DataContext에 할당, 요소의 논리적 자녀에 상속됩니다 Grid를 사용하여 수행 한 것과 같은 자체 값을 설정하지 않으면 모든 자식 DataContext를 효과적으로 업데이트합니다.

또한 C# p roperty Bill은 종속성 속성이 아니며이를 지정하면 업데이트가 시작되지 않고 초기 (null) 값을 사용하여 창이 계속됩니다.

+0

글쎄 이것은 간단했다 .. 그리고 그것은 심지어 TwoWay 바인딩으로 작동한다. :) – DethoRhyne

+1

건배 .. Dependency Property 메커니즘을 살펴보고 더 잘 이해하는 것이 좋습니다. 무역 도구로 XAML을 사용하려는 경우 매우 중요합니다. –

관련 문제