猿问

ListBoxItem中的复杂UI

在WPF中,我可以添加任何UI到ListBoxItem通过提供的S ListBox有ItemTemplate:


 <ListBox ItemsSource="{Binding}">

            <ListBox.ItemTemplate>

                <DataTemplate>

                    <Border BorderThickness="1" BorderBrush="Gray" CornerRadius="8" Padding="4,0,4,0">

                        <Grid>

                            <Grid.ColumnDefinitions>

                                <ColumnDefinition Width="50"/>

                                <ColumnDefinition/>

                            </Grid.ColumnDefinitions>


                            <Grid.RowDefinitions>

                                <RowDefinition/>

                                <RowDefinition/>

                                <RowDefinition/>

                            </Grid.RowDefinitions>


结果是:


在此输入图像描述


有没有办法在Windows窗体中实现相同的功能?


编辑:


1 -有什么办法,以实现在Windows窗体一样,同时保持separation of concerns之间View和Application Logic以这样的方式,如果我后来想完全重新定义View,我就不必重构整个应用程序?


2 - winforms是否支持数据绑定,使得我的每一个ListBoxItems都可以绑定到一个复杂的Entity,最终包括从Model数据到UI数据的中间类型转换,然后返回,这样我就不必写入大量的样板代码填充视图,然后将UI值传回模型以便保存?


3 - 如果我想以Animations这样的方式介绍当前SelectedItem会将其自身扩展为某种“行详细信息”模式,您可以在其中看到许多其他信息,该怎么办?


4 - winforms是否UI Virtualization以这样的方式支持,如果我有,说100万个项目,加载UI不需要一辈子,只渲染屏幕上可见的内容?


5 - 说我想在这个等式中引入复杂的图形。winforms渲染硬件加速了吗?


6 - 如何使Resolution IndependentListBox及其所有内容扩展到可用的窗口大小以便利用更大的屏幕同时保持与较小屏幕的兼容性?


7 - 有人建议使用ListView控件而不是常规控件ListBox,是否ListView提供了添加任何UI的功能?我可以为每个项目添加视频吗?或者带有保存和编辑按钮的复杂主/明细模板?


8 - winforms是否提供了一致且充足的文档模型,可以创建高保真的所见即所得文档和其他类型的丰富内容?


BIG阳
浏览 605回答 3
3回答

月关宝盒

我们通过在可滚动面板中使用UserControl来完成此操作。准备一个具有所有编辑控件的用户控件。将它们添加到可滚动面板,并将dosk属性设置为Top。通过观察添加的用户控件项目上的焦点和单击事件来实现项目选择行为。

青春有我

我真的很好地回答你实际上回答了所有8-9个问题,努力+1。然而,对于一个好的答案,一些挑剔。首先,在你的3号上,你实际上不会滚动自己的ListBoxItems。继承ListBox,使其成为所有者,并编写自定义绘制代码就足够了,并不是那么困难。其次,你的4号只是部分正确。你是对的,WinForms不公开Win32 ListBox控件的虚拟模式,但是一点P / Invoke很好地修复了它。您要添加的样式标志是LBS_NODATA。
随时随地看视频慕课网APP
我要回答