すべてのアプリケーションでベースとして使用したい自己定義のフレームワークで とBaseWindowView
を作成しました。BaseViewModel
BaseViewModel
たとえば、ボタンを追加できるメソッドがあります。Command
、 、ButtonImage
およびを定義できますLabelString
。このメソッドの呼び出しのサンプル コードは次のとおりです。
AddButton(OpenAnyTabCommand, "../Images/image.png", "LabelString");
私のBaseWindowView
には、で定義したRibbonMenue
すべてのが表示されている場所があります。RibbonButtons
BaseViewModel
<ItemsControl x:Name="CButtons" ItemsSource="{Binding Buttons}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel x:Name="ButtonStackPanel" Orientation="Horizontal">
</StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ribbon:RibbonButton
x:Uid="Button"
LargeImageSource="{Binding Path=ImageString}"
Label="{Binding Path=LabelString}"
Command="{Binding Path=ButtonCommand}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
これはサンプル プロジェクトにあり、正常に動作します。今、私はBaseWindowView
とBaseViewModel
をフレームワークに外注し、そこから使用したいと考えています。
BaseWindowView
私の計画は次のとおりです。各アプリケーションで、アプリケーションのとして設定したいと思いMainWindow
ます。このアプリケーション自体UserControls
では、BaseWindowView
. で定義したボタンは、新しいタブを開いて this の背後に表示するBaseViewModel
defined を呼び出す必要があります。Command
ViewModel
Command
では、私の問題を処理する最善の方法は何ですか? XAML に「クラシック継承」がないことはわかっています。StartUpUri
フレームワークビューにを定義するようなことはできますApp.xaml
か、それとも「少し」トリッキーですか?
追加として、次のようにDataTemplate
forTabItems
を定義できることがわかりました。UserControls
App.xaml
<DataTemplate DataType="{x:Type ViewModel:AnyViewModel}">
<view:TabItemAny/>
</DataTemplate>
@Sheridan: についての質問BaseWindowView
です。