2012-05-18 2 views
1

내가 PhoneVM 개체의 목록을 가지고 DataGrid개체 목록을 DataGrid에 바인딩하는 방법?

에 내 개체를 결합하기 위해 노력하고있어

배경입니다. 목록의 각 항목에는 StringBindingData의 목록이 포함되어 있습니다. 나는 데이터 그리드

그는 목록 DescriptionValue를 포함하여 사용자의 구성에 대해 다른 값에 해당하는 각 항목 INT의 행에서 다른 셀에 대응 StringBindingData의 각 항목이 필요합니다.

PhoneVM

는 다음과 같이 정의된다 :

public class StringBindingData : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    public string Description { get; set; } 

    private string _value; 
    public string Value 
    { 
     get { return _value; } 
     set 
     { 
      OnPropertyChanged("Value"); 
     } 

    } 

    public StringBindingData(string data, string description) 
    { 
     Value = data; 
     Description = description; 
    } 

    internal void OnPropertyChanged(string prop) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(prop)); 
     } 
    } 
} 

StringBindingData 목록의 첫 번째 항목의 설명 속성은 "이름"을 포함 할 수 있으며 Value 속성은 다음과 같습니다

public class PhoneVM 
{ 
    public List<StringBindingData> StringBindingData { get; private set; } 

    public PhoneVM() 
    { 

    } 
} 

StringBindingData는 다음과 같이 정의된다 실제 이름을 포함해야합니다. 목록의 두 번째 항목의 Description 속성에는 "전화 번호"가 포함될 수 있으며 Value 속성에는 실제 번호가 포함될 수 있습니다.

질문

나는이가 DataGrid에 바인딩 싶어. 어떻게해야합니까? 심지어는 분명히 잘못된 코드를보고

public Phone(List<PhoneVM> phoneVm) 
{ 
    InitializeComponent(); 

    phoneGrid.DataContext = phoneVm; 
} 

그러나 :

는 내가 지금까지 가지고하는 것은 뒤에 코드에두고 이름

<DataGrid Name="phoneGrid" AutoGenerateColumns="False" Height="150" Width="Auto" 
      SelectionMode="Single" SelectionUnit="FullRow" Margin="10,10,0,0" 
      HorizontalAlignment="Left" VerticalAlignment="Top" SelectionChanged="phoneGrid_SelectionChanged"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Name" 
      x:Name="columnPhoneNumber" 
      Binding="{Binding Path=Value}" 
      IsReadOnly="True"> 
     </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 

에 첫 번째 열을 결합하는 시도이다 . 나는 StringBindingData 객체를 phoneVm에서 가져 와서 그 데이터를 가져 오려고하는 DataContext을 지정하는 방법을 모르겠습니다.

이 기능을 사용하려면 XAML에 추가해야 할 것이 있습니까? 코드에 추가 할 수있는 다른 것이 있습니까? 내 데이터 모델을 변경해야합니까?

답변

1

보기 모델에서 StringBindingData 속성에 대한 바인딩이 누락되었습니다. DataGrid에 ItemsSource="{Binding StringBindingData}"을 추가하십시오.

+0

그리드로 데이터를 가져 오는 것이 트릭을 수행합니다. 안타깝게도 데이터는 수평이 아닌 세로로, 즉 열이 아닌 열 형식으로 표시됩니다. – DaveDev

관련 문제