내가 PhoneVM
개체의 목록을 가지고 DataGrid
개체 목록을 DataGrid에 바인딩하는 방법?
에 내 개체를 결합하기 위해 노력하고있어
배경입니다. 목록의 각 항목에는 StringBindingData
의 목록이 포함되어 있습니다. 나는 데이터 그리드
그는 목록 Description
및 Value
를 포함하여 사용자의 구성에 대해 다른 값에 해당하는 각 항목 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에 추가해야 할 것이 있습니까? 코드에 추가 할 수있는 다른 것이 있습니까? 내 데이터 모델을 변경해야합니까?
그리드로 데이터를 가져 오는 것이 트릭을 수행합니다. 안타깝게도 데이터는 수평이 아닌 세로로, 즉 열이 아닌 열 형식으로 표시됩니다. – DaveDev