所以我查看了这篇文章以及其他一些讨论类似情况的帖子,但仍未找到解决我想解决的问题的最佳解决方案.
在我的mvvm应用程序中,每个视图都有一个viewmodel.我想让viewmodels尽可能平坦,但是当涉及到与可观察集合的绑定时,它似乎并不实用.例如,如果我有一个页面显示客户端的配置文件信息,其中一个字段是一组活动订阅的复选框.我会有一个看起来像这样的viewmodel:
public class ClientViewModel
{
public class SubscriptionViewModel
{
public SubscriptionModel Subscription {get;set;}
public bool IsChecked {get;set;}
}
public string Name {get;set;}
public string Email {get;set;}
...
public ObservableCollection<SubscriptionViewModel> Subscriptions {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
由于IsChecked不属于的额外属性SubscriptionModel,我必须创建一个单独的SubscriptionViewModel并将其嵌套在客户端中.什么是更好的替代方法来做到这一点,以便我不必最终在viewmodels内的视图模型?
可能重复:
C:数组的地址如何等于它的值?
有人可以帮我解释阵列衰变吗?具体来说,我很困惑1)数组如何引用自身,2)当我定义时,它是真的吗?
int array[] = { 45, 67, 89 };
Run Code Online (Sandbox Code Playgroud)
那么数组,数组和&array [0]都引用这个数组?我发现它们在打印时看起来是相同的输出,但是它们在内存中也指的是完全相同的东西吗?
这是一个简单的实现indexOf()在LinkedListOracle的网站.我对这个if循环如何工作有点困惑:
public int indexOf(E e) {
for (ListIterator<E> it = listIterator(); it.hasNext(); )
if (e == null ? it.next() == null : e.equals(it.next()))
return it.previousIndex();
// Element not found
return -1;
}
Run Code Online (Sandbox Code Playgroud)
因此,ListIterator对象在列表的头部创建.for循环继续,直到迭代器到达列表的末尾,if循环检查是否找到目标对象.我不明白的部分是,为什么if循环检查it.next() == null何时e == null?当输入e为空时,有人可以帮助我了解它是如何完成的吗?