嗨我想寫一些儀表板。您應該能夠從某個來源拖動儀表板上的小部件。小部件的佈局應該是免費的(第一個Canvas,後面是一些自己的Panel)。WPF儀表板和小部件
我的問題:
- 你有這個樣的,我控制信息的任何提示?
- 這是個好主意,用選擇作爲BaseClass的還是應該從控制
嗨我想寫一些儀表板。您應該能夠從某個來源拖動儀表板上的小部件。小部件的佈局應該是免費的(第一個Canvas,後面是一些自己的Panel)。WPF儀表板和小部件
我的問題:
繼承我會做所有的小部件BaseClass
,再建一個ViewModel
來自該BaseClass
與繼承每個部件,沿View
去與ViewModel
在那之後,我會在主應用程序ViewModel
像ObservableCollection<WidgetBaseViewModel> OpenWidgets
,並將其綁定到一個ItemsControl
。
的ItemsControl
將有它的一套ItemsPanelTemplate
爲Canvas
,並且每個WidgetBaseViewModel
將包含一個Top
,Left
,Height
和Width
財產。
實際UI與將基於一個DataTemplate
顯示每個插件,並且可能是你想要的任何東西,雖然UserControl
將是最簡單
<ItemsControl ItemsSource="{Binding OpenWidgets}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type local:WidgetAViewModel}">
<local:WidgetAView />
</DataTemplate>
<DataTemplate DataType="{x:Type local:WidgetBViewModel}">
<local:WidgetBView />
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Canvas ... />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
此外,你需要綁定你的Canvas.Top
/Canvas.Left
的ItemContainerStyle
而不是實際的ItemTemplate
以使其在畫布中正確顯示。