gpt4 book ai didi

silverlight - MVVM View 绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 10:30:21 25 4
gpt4 key购买 nike

可以说我有一个项目列表。所以我有 2 个 View :ListView 和 ItemView。

我还有 2 个 ViewModel:ListViewModel 和 ItemViewModel。

在 ListViewModel 中,我创建并初始化 ItemViewModels 的 ObservableCollection。
在 ListView 中,我有 ListBox 和 ItemTemplate -> ItemView,并且 ItemSource 绑定(bind)到 ListViewModel 中的 ObservableCoolection。
我想将每个 ItemView 绑定(bind)到每个 ItemViewModel,以便能够使用绑定(bind)到 ItemView.xaml,但我无法实现它。

最佳答案

我从你的问题中了解到,你想将 ItemViewModel 绑定(bind)到 ItemView.xaml 并且你的 ListBox 驻留在其他一些 xaml 中(比如 ListBox.xaml)。您不想在 ListBox.xaml 中应用与 ItemViewmodel 和 ItemVIew 相关的绑定(bind)。如果这是问题,你
可以轻松创建DataTemplate映射来实现:

<Window
xmlns:vw="namespace of your view files (i.e. xaml files. ListBox.xaml and ItemView.xaml)"
xmlns:ViewModels="namespace of your view model files (i.e. ItemViewModel.cs, ListBoxViewModel.cs)">
<Window.Resources>
<DataTemplate DataType="{x:Type ViewModels:ItemViewModel}">
<vw:ItemView />
</DataTemplate>
</Window.Resources>
<Grid>
<ListBox ItemsSource="{Binding Path=List of ItemViewmodel in ListBoxViewModel.cs}"
</Grid>
</Window>

然后,您的 ItemViewModel 类将与 ItemView 映射,因为它在 Resources 中指定,没有任何键。现在您可以在 ItemView.xaml 中应用绑定(bind)。看,这里不需要指定ListBox的Itemtemplate,会自动解析的。如果你想指定 ItemTemplate (并且不想在资源中指定),那么写这个:
<ListBox.ItemTemplate>
<DataTemplate>
<vw:ItemView />
</DataTemplate>
</ListBox.ItemTemplate>

无论哪种方式都应该工作:)

关于silverlight - MVVM View 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com