2011-07-27 3 views
0

왜이 바인딩이 업데이트되지 않습니까?간단한 XAML 바인딩의 실수

코드 : MainWindow.xaml

<Window x:Class="WpfApplication12.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfApplication12" 
     Height="350" Width="525"> 
    <StackPanel> 
     <local:UserControl1 x:Name="usr" /> 
     <TextBlock Text="{Binding ElementName=usr, Path=txt.Text}" /> 
    </StackPanel> 
</Window> 

UserControl1.xaml

인해 보호 수준에
<UserControl x:Class="WpfApplication12.UserControl1" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <TextBox Text="qwe" x:Name="txt" /> 
</UserControl> 

답변

6
UserControl을 내부의 텍스트 상자에 액세스 할 수없는

도는 필드, 당신이 할 수있다 그것들에 묶어 두지 마라. Public 속성으로 UserControl의 코드 뒤에 코드를 노출해야합니다.

public TextBox Txt 
{ 
    get { return txt; } 
} 

편집 : 헹크 Holterman는 지적하면 전체 텍스트 상자를 노출하지 않을 수 있습니다, 그래서 당신은 텍스트 상자가 내부적으로 예를 들어 바인딩하는 종속성 속성을 정의 할 수 있습니다.

+0

그래, 그거야. 내부로 표시된 이유를 이해할 수 없어야합니다. – Poma

+1

그런 다음 텍스트 상자가 아닌 strng 속성을 표시합니다. –

+0

@Poma : 바인딩에서 모든 것은 공용 속성이어야하며 필드는 작동하지 않습니다. –