gpt4 book ai didi

c# - Silverlight,如何制作UserControl列表(在ContentControl中?)

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

在过去的几个小时里,我一直在努力奋斗……

我有一个名为“DayItem”的用户控件,我想在另一个名为“DayPanel”的UserControl中显示48次。
我要说的是,这是以MVVM风格完成的,但是我只是在体验,一种直接的方法可以很好地回答。

我在ObservableCollection<DayItem>模型中有一个DayPanel,在Xaml中有一个<ItemsPresenter />

如果我做

this.ItemsSource = DayItems;

一切都很好。
但是,我想能够像列表一样在UI中使用那些DayItems ...以支持多选等。

所以我尝试使用ContentControl,并将其内容设置为 ObservableCollection
但它只显示 ObservableCollection对象的ToString文本。
所以我想我在那里需要一个DataTemplete ...
但是为什么我需要一个DataTemple来显示一个控件?
它已经在自己的Xaml中进行了样式设置,我不想重复它的样式设置。

或者也许我完全错了,无论如何我需要帮助:x

编辑:

我说了这句话,说了什么数据类型不是必需的,甚至是不可能的。
在后面的代码中,我告诉列表框,它的ItemSource是ObservableCollection。

现在我遇到了其他问题... ListBox相关...
列表框中的每个控件之间都有空隙,这使布局困惑
而且我还需要找出一种通过拖动来选择多个项目的方法...

谢谢你的帮助

最佳答案

首先,您需要为DayItem用户控件提供一个 View 模型。让我们称之为DayItemViewModel。另外,我想您还可以使用DayPanel的 View 模型,例如DayPanelViewModel。然后,您的DayPanelViewModel将公开DayItemViewModel实例的集合:

public class DayPanelViewModel
{
public ObservableCollection<DayItemViewModel> DayItems { get; set; }
}

然后,在您的DayPanel.xaml中:
<UserControl x:Class="DayPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<DataTemplate x:Key="DayItemTemplate"
DataType="{x:Type my:DayItemViewModel}">
<my:DayItem />
</DataTemplate>
</UserControl.Resources>
<Grid>
<ListBox ItemsSource="{Binding DayItems}"
ItemTemplate="{StaticResource DayItemTemplate}" />
</Grid>
</UserControl>

关于c# - Silverlight,如何制作UserControl列表(在ContentControl中?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4724151/

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