初めてのWPF 7日目

モジュール側からMenuServiceを参照

またまたいてまえ系コーディング。やってみたら動いたよ…。
HomeModuleのViewAのViewModelで。
public ViewAViewModel(IMenuService menuService)
{
    MainMenuItems = menuService.GetMainMenuItems();
    Message = "Home Module";
}
デバッグしてここで待ち受けているとMainMenuItemsの中は空(HomeModuleのOnInitializedよりも先にこちらを通る)だったのですが、実行するとメニューが表示されました。
Prism MenuService

MaterialDesignのCardを使う

Cardで包んでボタンをAccentButtonに変えたらグッと良くなるはず、と思ってましたがいまいち垢抜けません…。
WrapPanelがWrapしてくれず苦労しました。MenuItemを拡張してグリッドの位置をモデルから渡そうかと思ったくらい。
MaterialDesignのCard(WPF)

<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をクリックしたらちゃんと動きました。
WPF XCOPY


現在は親からモジュールへ参照を張っているのでモジュールのdllも一緒にリリースビルドに含まれています。
dllの並び見ているとモジュールのプロジェクト名を変えたくなってきて一旦終了。
OK キャンセル 確認 その他