初めてのWPF 7日目
2019/01/18
モジュール側からMenuServiceを参照
またまたいてまえ系コーディング。やってみたら動いたよ…。HomeModuleのViewAのViewModelで。
public ViewAViewModel(IMenuService menuService) { MainMenuItems = menuService.GetMainMenuItems(); Message = "Home Module"; }デバッグしてここで待ち受けているとMainMenuItemsの中は空(HomeModuleのOnInitializedよりも先にこちらを通る)だったのですが、実行するとメニューが表示されました。
MaterialDesignのCardを使う
Cardで包んでボタンをAccentButtonに変えたらグッと良くなるはず、と思ってましたがいまいち垢抜けません…。WrapPanelがWrapしてくれず苦労しました。MenuItemを拡張してグリッドの位置をモデルから渡そうかと思ったくらい。
<Grid> <ItemsControl ItemsSource="{Binding MainMenuItems}"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <WrapPanel /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <materialDesign:Card Margin="12" Padding="16" Width="280"> <StackPanel> <TextBlock Style="{DynamicResource MaterialDesignTitleTextBlock}" Text="{Binding Title}"></TextBlock> <TextBlock Text="{Binding Description}" Margin="10 8 0 0"></TextBlock> <Button Margin="12 16 12 0" Style="{StaticResource MaterialDesignRaisedAccentButton}" Command="{Binding Path=DataContext.NavigateCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding NavigatePath}"> <TextBlock Margin="6 0 0 0" Style="{StaticResource MaterialDesignBody1TextBlock}" Text="OPEN" /> </Button> </StackPanel> </materialDesign:Card> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </Grid>
画像を追加する前に発行後のフォルダ構成を確認
発行方法は3種類あるようですが、一番簡単そうなXCOPYでいくことに。ところがその方法を書いてくれていない。
普通に「発行」するとexeが出来ずにインストーラーが出来てました。
ビルドをリリースに変えてbinフォルダの中にできたものをデスクトップに移動しexeをクリックしたらちゃんと動きました。
現在は親からモジュールへ参照を張っているのでモジュールのdllも一緒にリリースビルドに含まれています。
dllの並び見ているとモジュールのプロジェクト名を変えたくなってきて一旦終了。