private List<string> DetermineInterestingViewProperties()
{
var targetViewType = TargetViewType;
var finalProperties = new List<string>();
if ((_viewPropertySelector == null) || (_viewPropertySelector.MustSubscribeToAllViewProperties(targetViewType)))
{
var viewProperties = TargetView.GetProperties();
finalProperties.AddRange(viewProperties);
}
else
{
var propertiesToSubscribe = new HashSet<string>(_viewPropertySelector.GetViewPropertiesToSubscribeTo(targetViewType));
if (!propertiesToSubscribe.Contains("DataContext"))
{
propertiesToSubscribe.Add("DataContext");
}
foreach (var propertyToSubscribe in propertiesToSubscribe)
{
if (propertiesToSubscribe.Contains(propertyToSubscribe))
{
finalProperties.Add(propertyToSubscribe);
}
}
}
return finalProperties;
}