在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>結(jié)果是:在此輸入圖像描述有沒有辦法在Windows窗體中實(shí)現(xiàn)相同的功能?編輯:1 -有什么辦法,以實(shí)現(xiàn)在Windows窗體一樣,同時(shí)保持separation of concerns之間View和Application Logic以這樣的方式,如果我后來想完全重新定義View,我就不必重構(gòu)整個(gè)應(yīng)用程序?2 - winforms是否支持?jǐn)?shù)據(jù)綁定,使得我的每一個(gè)ListBoxItems都可以綁定到一個(gè)復(fù)雜的Entity,最終包括從Model數(shù)據(jù)到UI數(shù)據(jù)的中間類型轉(zhuǎn)換,然后返回,這樣我就不必寫入大量的樣板代碼填充視圖,然后將UI值傳回模型以便保存?3 - 如果我想以Animations這樣的方式介紹當(dāng)前SelectedItem會將其自身擴(kuò)展為某種“行詳細(xì)信息”模式,您可以在其中看到許多其他信息,該怎么辦?4 - winforms是否UI Virtualization以這樣的方式支持,如果我有,說100萬個(gè)項(xiàng)目,加載UI不需要一輩子,只渲染屏幕上可見的內(nèi)容?5 - 說我想在這個(gè)等式中引入復(fù)雜的圖形。winforms渲染硬件加速了嗎?6 - 如何使Resolution IndependentListBox及其所有內(nèi)容擴(kuò)展到可用的窗口大小以便利用更大的屏幕同時(shí)保持與較小屏幕的兼容性?7 - 有人建議使用ListView控件而不是常規(guī)控件ListBox,是否ListView提供了添加任何UI的功能?我可以為每個(gè)項(xiàng)目添加視頻嗎?或者帶有保存和編輯按鈕的復(fù)雜主/明細(xì)模板?8 - winforms是否提供了一致且充足的文檔模型,可以創(chuàng)建高保真的所見即所得文檔和其他類型的豐富內(nèi)容?
3 回答

月關(guān)寶盒
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
我們通過在可滾動面板中使用UserControl來完成此操作。準(zhǔn)備一個(gè)具有所有編輯控件的用戶控件。將它們添加到可滾動面板,并將dosk屬性設(shè)置為Top。通過觀察添加的用戶控件項(xiàng)目上的焦點(diǎn)和單擊事件來實(shí)現(xiàn)項(xiàng)目選擇行為。

青春有我
TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
我真的很好地回答你實(shí)際上回答了所有8-9個(gè)問題,努力+1。然而,對于一個(gè)好的答案,一些挑剔。首先,在你的3號上,你實(shí)際上不會滾動自己的ListBoxItems。繼承ListBox,使其成為所有者,并編寫自定義繪制代碼就足夠了,并不是那么困難。其次,你的4號只是部分正確。你是對的,WinForms不公開Win32 ListBox控件的虛擬模式,但是一點(diǎn)P / Invoke很好地修復(fù)了它。您要添加的樣式標(biāo)志是LBS_NODATA
。
- 3 回答
- 0 關(guān)注
- 627 瀏覽
添加回答
舉報(bào)
0/150
提交
取消