2011-08-24 102 views
0

嗨我想寫一些儀表板。您應該能夠從某個來源拖動儀表板上的小部件。小部件的佈局應該是免費的(第一個Canvas,後面是一些自己的Panel)。WPF儀表板和小部件

我的問題:

  • 你有這個樣的,我控制信息的任何提示?
  • 這是個好主意,用選擇作爲BaseClass的還是應該從控制

回答

2

繼承我會做所有的小部件BaseClass,再建一個ViewModel來自該BaseClass與繼承每個部件,沿View去與ViewModel

在那之後,我會在主應用程序ViewModelObservableCollection<WidgetBaseViewModel> OpenWidgets,並將其綁定到一個ItemsControl

ItemsControl將有它的一套ItemsPanelTemplateCanvas,並且每個WidgetBaseViewModel將包含一個TopLeftHeightWidth財產。

實際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.LeftItemContainerStyle而不是實際的ItemTemplate以使其在畫布中正確顯示。

相關問題