2012-06-07 7 views
-1

공통 코드에서 잘못된 점을 알고 싶습니다. 는 여기있다 :데이터 바인딩이 작동하지 않습니다.

namespace Morse_Mail{ 

public partial class MainWindow : Window 
{ 

    public ObservableCollection<Message> Messages { get; set; } 


    public MainWindow() 
    { 
     Messages = new ObservableCollection<Message>(); 

     InitializeComponent(); 
    } 


    // some code here 



} 

public class Message : INotifyPropertyChanged 
{ 
    private string subject; 
    private string date; 
    private string sender; 
    private string id; 

    public string Subject 
    { 
     get { return subject; } 
     set { subject = value; OnPropertyChanged("Subject"); } 
    } 
    public string Date 
    { 
     get { return date; } 
     set { date = value; OnPropertyChanged("Date"); } 
    } 
    public string Sender 
    { 
     get { return sender; } 
     set { sender = value; OnPropertyChanged("Sender"); } 
    } 
    public string ID { get; set; } 

    public Message(string _Subject, string _Date, string _Sender, string _ID) 
    { 
     Subject = _Subject; 
     Date = _Date; 
     Sender = _Sender; 
     ID = _ID; 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void OnPropertyChanged(string propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
    } 
}} 

그리고 나는 메시지 ObserverableCollection로 목록보기의 내용을 바인딩 할. 여기 내 XAML 코드 제공 :

<Window x:Class="Morse_Mail.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="864.5" Width="1203.5" ResizeMode="NoResize" Title="Morse Mail" WindowStartupLocation="CenterScreen"> 
<Grid Height="830" VerticalAlignment="Top"> 
    <ListView x:Name="ListView" HorizontalAlignment="Left" Height="704" Margin="47,39,0,0" VerticalAlignment="Top" Width="600" IsSynchronizedWithCurrentItem="True" 
       ItemsSource="{Binding Messages}"> 
     <ListView.View > 
      <GridView AllowsColumnReorder="true"> 
       <GridViewColumn Width="300" Header="Subject" 
           DisplayMemberBinding="{Binding subject}"/> 
       <GridViewColumn Width="150" Header="Date" 
           DisplayMemberBinding="{Binding date}"/> 
       <GridViewColumn Width="120" Header="Sender" 
           DisplayMemberBinding="{Binding sender}"/> 
       <GridViewColumn Width="20" Header="ID" 
           DisplayMemberBinding="{Binding id}"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 
</Grid> 

내 응용 프로그램의 작동을하지만 메시지 컬렉션에 새 항목을 추가하는 버튼을 사용하고 있으면, 그 컬렉션에 나타납니다,하지만 아무것도 창에 변경 사항이 없습니다. 내 데이터 바인딩이 작동하지 않는 이유 및 방법

+1

아무 것도 묶지 않았습니다. 데이터 바인딩이 작동하려면보기에 바인딩해야합니다. – Oded

답변

3

DataContext을 설정하지 않은 것 같습니다. (당신이 묶는 속성을 가지고있는 객체 일 필요가 있습니다. 여기에 창이 있습니다.)

+0

죄송 합니다만, 어떻게해야합니까? "DataContext = Messages;"를 추가했습니다. 내 코드에서, 아무 것도 변경되지 않았습니다 : C – omtcyfz

+0

@arcadia, MainWindow 생성자의 끝에'DataContext = this;'를 추가하십시오 –

+0

그래, 해봤지만 아무것도 바뀌지 않았다. – omtcyfz

관련 문제