Привязать список<MyObject> к DataGrid? При попытке получить "TargetInvocationException"
Я пытаюсь связать List<MyObject>
к DataGrid в WPF вместо использования массива MyObject[]
, Всякий раз, когда я пытаюсь сделать это, я получаю необработанное TargetInvocationException
,
Мой объект:
public class Website
{
public string WebsiteName { get; set; }
public string WebsiteAddress { get; set; }
private LoginCredentials Credentials { get; set; }
public bool UniquePassword { get; set; } //If uses uses a unique password on this site
public bool LoginToSite { get; set; }
public bool UsesUsernameAndDomain { get; set; }
public string GetUsername()
{
if(UsesUsernameAndDomain)
{
return Credentials.Username + "@" + Credentials.EmailDomain;
}
else
{
return Credentials.Username;
}
}
public void SetUsername(string value)
{
Credentials.Username = value;
}
public void SetDomain(string value)
{
Credentials.EmailDomain = value;
}
}
Фрагмент ViewModel:
private List<Website> m_Websites;
public List<Website> Websites
{
get { return m_Websites; }
set { m_Websites = value; RaisePropertyChanged("Websites"); }
}
XAML:
<DataGrid ItemsSource="{Binding}"
DataContext="{Binding Websites}"
AutoGenerateColumns="False"
FontSize="14"
VerticalAlignment="Center"
VerticalContentAlignment="Center">
Когда я пытаюсь сделать это с массивом, он работает как положено. Я хочу использовать коллекцию для дополнительного поведения, которое входит в комплект. Что я здесь не так делаю?
Примечание: я очень новичок в WPF и только недавно озадачился, хотя связывание данных не предполагает, что я знаю все тонкости WPF или его парадигм.
1 ответ
Решение
Я сделал довольно новичок ошибку. При связывании со свойством List я не создавал частное поле типа List.
Я пытался связать с:
private List<Website> m_Websites;
public List<Website> Websites
{
get { return m_Websites; }
set { m_Websites = value; RaisePropertyChanged("Websites"); }
}
Мне нужно было создать новый список:
private List<Website> m_Websites = new List<Websites>();