2014-11-30 2 views
0

WPF/SL을 처음 사용합니다. 나는 실버 라이트의 데이터 바인딩 문제에 직면했다.silverlight - 내 수업에서 데이터 빙빙 문제가 발생했습니다.

시나리오 1 -> 사각형의 채우기 속성을 텍스트 상자의 Text 속성을 바인딩 -

<Canvas> 
<Rectangle x:Name="myrect" Fill="{Binding Text, Mode=TwoWay}" Height="50" MinHeight="40" Width="100" Canvas.Left="213" Canvas.Top="202"/> 
    <Button Height="30" Width="50" Content="Add Age" Click="Button_Click" Canvas.Left="51" Canvas.Top="113"></Button> 
    <TextBox x:Name="mytb" Canvas.Left="227" TextWrapping="Wrap" Text="TextBlock" Canvas.Top="114" Height="30" Width="100"/> 
</Canvas> 

---------------------------------------------------------------- 
public MainPage() 
     { 
      InitializeComponent(); 
      myrect.DataContext = mytb; 
     } 

private void Button_Click(object sender, RoutedEventArgs e) 
      { 
       mytb.Text = "orange"; 
      } 

를 잘 작동하지만 속성 이름을 가진 Person 클래스를 생성하고 사각형의 채우기 속성이 속성을 바인딩 할 때, 그것을 작동하지 않습니다.

namespace SilverlightApplication9 
{ 
    public class Person 
    { 
     public string Name { get; set; } 
    } 
} 
------------------------------------------------ 
namespace SilverlightApplication9 
{ 
    public partial class MainPage : UserControl 
    { 

     Person person = new Person(); 
     public MainPage() 
     { 
      InitializeComponent(); 
      myrect.DataContext = person; 
     } 

     private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      person.Name = "orange"; 
     } 

    } 
} 
------------------------------------------------------------------------- 
    <Canvas> 
    <Rectangle x:Name="myrect" Fill="{Binding Name, Mode=TwoWay}" Height="50" MinHeight="40" Width="100" Canvas.Left="213" Canvas.Top="202"/> 
     <Button Height="30" Width="50" Content="Add Age" Click="Button_Click" Canvas.Left="51" Canvas.Top="113"></Button> 
     <TextBox x:Name="mytb" Canvas.Left="227" TextWrapping="Wrap" Text="TextBlock" Canvas.Top="114" Height="30" Width="100"/> 
    </Canvas> 

내가 잘못 된 부분을 이해할 수 없습니다. 당신이

답변

0

당신이 놓치고있는 부분이 INotifyPropertyChanged입니다

감사를 제공 할 수있는 모든 도움을 주셔서 감사합니다. .NET Framework에는 속성 알림이 내장되어 있지 않으므로 소스 모델에서이 인터페이스를 구현해야 프레젠테이션 프레임 워크에 변경 내용을 알릴 수 있어야합니다.

public class Person : INotifyPropertyChanged 
{ 
    public string Name 
    { 
     get { return _name; } 
     set 
     { 
      if (_name != value) 
      { 
       _name = value; 
       RaisePropertyChanged("Name"); 
      } 
     } 
    } 
    private string _name; 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected void RaisePropertyChanged(string prop) 
    { 
     var handler = PropertyChanged; 
     if (handler != null) 
      handler(this, new PropertyChangedEventArgs(prop)); 
    } 
} 
+0

도움 주셔서 감사합니다. – earthling

관련 문제