2011-05-15 8 views
0

Silverlight에서 데이터 바인딩을 설정하는 데 몇 가지 문제가 있습니다.Silverlight 데이터 바인딩 MVVM

임 MVVM 접근법을 사용하여 좋은 예제를 발견했습니다. 그래서 필자는 내 View와 ViewModel을 만들었고, 데이터를 포함하기 위해 사용할 클래스와 클래스를 채우기 위해 사용할 클래스를 만들었습니다.

는 첫째로 내 ViewModel에 보이는 것처럼 내보기에 다음

public class MainPageVM : INotifyPropertyChanged 
    { 
     ObservableCollection<Item> Items; 
     public MainPageVM() 
     { 
      InitializeItems InitItems = new InitializeItems(); 
      InitItems.GenerateItemList(out Items); 
      RaiseProertyChanged("Items"); 
     } 
     public string test = "Binding Test"; 

     public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 

     private void RaiseProertyChanged(string propertyName) 
     { 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this,new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 
      } 
     } 
    } 

그리고 내가 가지고 : 나는 중단 점을 추가

<UserControl.Resources> 
    <viewmodel:MainPageVM x:Key="ViewModel" />  
</UserControl.Resources> 
    <Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource ViewModel}"> 
    <StackPanel> 
     <TextBlock Text="{Binding test}"/> 
     <ListBox ItemsSource="{Binding Items}" 
      Width="200" 
      Height="200"> 
      <ListBoxItem Width="190" Height="20"> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding ItemName}"/> 
        <TextBlock Text="-"/> 
        <TextBlock Text="{Binding ItemID}"/> 
       </StackPanel> 
      </ListBoxItem> 
     </ListBox> 
    </StackPanel> 
</Grid> 

내가 채워되고 결합하려고 메신저 내 ObservableCollection에를 알고 있지만 아무 것도 바인딩, 오류 창에서 메신저 그냥 MainPageVM에 존재하지 않는 xxx 속성을 받고.

여기에있는 조언은 어떤 일이 벌어 질 수 있는지에 관해서는 약간 분실되어 있기 때문에 큰 도움이 될 것입니다. 이것이 제 첫 번째 실버 라이트 어플리케이션입니다.

감사합니다.

+0

왜 누군가가 이것을 downvoted 했습니까? – Town

답변

2

항목은 공개 속성이어야합니다. 테스트 필드와 동일합니다. Silverlight에서는 공용 속성에만 바인딩 할 수 있습니다.

또한 일반적으로 이러한 속성의 설정자에서 속성 변경 이벤트를 발생시킵니다. 그러면 Silverlight 런타임에서 해당 속성에 바인딩 된 컨트롤을 해당 속성의 새 값으로 새로 고치도록 지시합니다.

+0

감사합니다. 속성이 아닌 공용 변수에 바인딩 할 수 있다고 생각했습니다. – FCat

+0

환영합니다! –