我想我的對象綁定到一個DataGrid
我PhoneVM
對象的列表。列表中的每個項目都包含一個StringBindingData
的列表。我需要每個項目StringBindingData
以對應不同的細胞在DataGrid
每個項目詮釋他的列表中對應不同的值用戶的配置,包括Description
和Value
一行。
PhoneVM
被定義爲:
public class PhoneVM
{
public List<StringBindingData> StringBindingData { get; private set; }
public PhoneVM()
{
}
}
和StringBindingData
被定義爲:
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
列表中的第一個項目的Description屬性可能含有「名稱」和值屬性將包含實際的名稱。列表中第二項的Description屬性可能包含「電話號碼」,而Value屬性將包含實際的號碼。
問題
我想這些綁定到DataGrid
。我怎樣才能做到這一點?
我至今是第一列綁定到名稱
<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>
有了這個後面的代碼企圖:
public Phone(List<PhoneVM> phoneVm)
{
InitializeComponent();
phoneGrid.DataContext = phoneVm;
}
但即使看代碼很顯然是錯誤的。我不知道如何指定DataContext
我希望它從phoneVm
獲得StringBindingData
對象並從中獲取數據。
有什麼我需要添加到XAML來得到這個工作?有什麼我可以添加到代碼?我是否需要更改我的數據模型?
只要數據進入網格,這就是個竅門。不幸的是,它是垂直顯示數據而不是水平顯示,即以列形式而不是行形式顯示。 – DaveDev