すべてのアプリケーションでベースとして使用したい自己定義のフレームワークで とBaseWindowViewを作成しました。BaseViewModel
BaseViewModelたとえば、ボタンを追加できるメソッドがあります。Command、 、ButtonImageおよびを定義できますLabelString。このメソッドの呼び出しのサンプル コードは次のとおりです。
AddButton(OpenAnyTabCommand, "../Images/image.png", "LabelString");
私のBaseWindowViewには、で定義したRibbonMenueすべてのが表示されている場所があります。RibbonButtonsBaseViewModel
<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 の背後に表示するBaseViewModeldefined を呼び出す必要があります。CommandViewModelCommand
では、私の問題を処理する最善の方法は何ですか? XAML に「クラシック継承」がないことはわかっています。StartUpUriフレームワークビューにを定義するようなことはできますApp.xamlか、それとも「少し」トリッキーですか?
追加として、次のようにDataTemplateforTabItemsを定義できることがわかりました。UserControlsApp.xaml
<DataTemplate DataType="{x:Type ViewModel:AnyViewModel}">
<view:TabItemAny/>
</DataTemplate>
@Sheridan: についての質問BaseWindowViewです。