У меня есть модель, которая имеет ряд атрибутов, которые могут или не могут быть нулевыми, в зависимости от того, доступны ли данные для этих конкретных атрибутов на удаленном сервере.
Я создаю простое приложение для Windows Phone, которое предоставляет более легкодоступные версии этой информации на мобильный телефон. Я обнаружил, что в случае, если свойства модели выше не установлены, значение не отображается (отображается пустым), но метка по-прежнему отображается.
После рассмотрения ряда различных альтернатив для этого (включая огромное количество операторов if, тьфу) я решил, что если я задам имя для определенных атрибутов в xaml, чтобы соответствовать свойствам модели данных, на которую я смотрел Затем я в режиме реального времени имею систему анализировать свойства модели данных и элементы моего xaml. Если свойство в моем xaml совпадает с именем свойства в моей модели, а модель имеет нулевое значение, я могу сделать видимость свернутой. Если модель не была нулевой, сделайте ее видимой. Таким образом, у меня могло быть чистое, динамическое решение, которое показывало бы только те данные, которые действительно доступны.
Вот код
PropertyInfo[] properties = data.GetType().GetProperties();
foreach (PropertyInfo property in properties)
{
FieldInfo view = this.GetType().GetField(property.Name);
if (view != null)
{
if (property.GetValue(data, null) == null)
{
object aView = view.GetValue(this);
aView.GetType().GetProperty("Visibility").SetValue(aView, "Collapsed", null);
}
else
{
object aView = view.GetValue(this);
aView.GetType().GetProperty("Visibility").SetValue(aView, "Visible", null);
}
}
}
К сожалению, я попал в ловушку. Я не могу понять, как получить доступ к элементам xaml. Я пытался использовать
this.GetType().GetProperties()
this.GetType().GetFields()
this.GetType().GetMembers()
Чтобы найти элементы, которые я ищу, но они не отображаются ни в одном из них. Я что-то упускаю?
Есть ли лучший способ сделать это, что красивее?
Заранее спасибо за помощь.