12.明細画面
明細画面
前の一覧画面からこの明細画面へ遷移します。
View(画像をクリックすると拡大)ZAMLは下記になります。
View
<Window x:Class="LivetWPFApplication100.Views.Window74" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:core="clr-namespace:Microsoft.Expression.Interactivity.Core;assembly= Microsoft.Expression.Interactions" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:l="http://schemas.livet-mvvm.net/2011/wpf" xmlns:v="clr-namespace:LivetWPFApplication100.Views" xmlns:vm="clr-namespace:LivetWPFApplication100.ViewModels" xmlns:b="clr-namespace:LivetWPFApplication100.Behaviors" Title="Window74" Height="714" Width="1035" WindowStartupLocation="CenterScreen"> <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/Resources/Styles.xaml"/> <ResourceDictionary Source="/Resources/Styles2.xaml"/> <ResourceDictionary Source="/Resources/StylesBG.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Window.Resources> <i:Interaction.Triggers> <!--WindowのContentRenderedイベントのタイミングでViewModelのInitialize メソッドが呼ばれます--> <i:EventTrigger EventName="ContentRendered"> <l:LivetCallMethodAction MethodTarget="{Binding}" MethodName= "Initialize"/> </i:EventTrigger> <i:EventTrigger EventName="Loaded"> <i:InvokeCommandAction Command="{Binding Path=Loaded}" CommandParameter= "{Binding Mode=OneTime,RelativeSource= {RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}}}"/> </i:EventTrigger> <i:EventTrigger EventName="Closing"> <i:InvokeCommandAction Command="{Binding Path=Closing}" CommandParameter="{Binding Mode=OneTime,RelativeSource= {RelativeSource Mode=FindAncestor,AncestorType={x:Type Window}}}"/> </i:EventTrigger> <l:InteractionMessageTrigger MessageKey="Close" Messenger= "{Binding Messenger}"> <l:WindowInteractionMessageAction/> </l:InteractionMessageTrigger> </i:Interaction.Triggers> <Grid Height="686" Width="1025" Background="#FFE6E6FA" > <TextBox Background="AliceBlue" Height="23" HorizontalAlignment="Left" Margin="10,12,0,0" Name="txtMessage" Text="{Binding Path=txtMessage}" VerticalAlignment="Top" Width="700" /> <Button Style="{StaticResource CommandTemplate}" Foreground="White" Content="" Height="40" HorizontalAlignment="Left" Margin="1009,613,0,0" Name="button15" VerticalAlignment="Top" Width="8" /> <TextBox Style="{StaticResource HighlightTextBox}" Height="21" HorizontalAlignment="Right" Margin="0,52,717,0" Name="txt年度プロジェクトコード" Text="{Binding Path=txt年度プロジェクトコード}" VerticalAlignment= "Top" Width="140" /> <TextBox Style="{StaticResource HighlightTextBox}" TextWrapping="Wrap" Height="37" HorizontalAlignment="Left" Margin="168,82,0,0" Name= "txtプロジェクト名" Text="{Binding Path=txtプロジェクト名}" VerticalAlignment="Top" Width="140" /> <TextBox Style="{StaticResource HighlightTextBox}" Height="21" HorizontalAlignment="Right" Margin="0,134,717,0" Name="txt作成日" Text="{Binding Path=txt作成日}" VerticalAlignment="Top" Width="140" /> <TextBox Style="{StaticResource HighlightTextBox}" Height="21" HorizontalAlignment="Right" Margin="0,166,717,0" Name="txt部名" Text="{Binding Path=txt部名}" VerticalAlignment="Top" Width="140"/> <TextBox Style="{StaticResource HighlightTextBox}" Height="21" HorizontalAlignment="Left" Margin="169,0,0,463" Name="txt作成者" Text="{Binding Path=txt作成者}" VerticalAlignment="Bottom" Width="139" /> <TextBox Style="{StaticResource HighlightTextBox}" Height="21" HorizontalAlignment="Right" Margin="0,234,717,0" Name="textBox1" Text="{Binding Path=txt販売金額,StringFormat={}{0:N2}}" VerticalAlignment="Top" Width="140" /> <TextBox Style="{StaticResource HighlightTextBox}" Height="21" HorizontalAlignment="Right" Margin="0,268,717,0" Name="textBox2" Text="{Binding Path=txt販売先名}" VerticalAlignment="Top" Width="140" /> <TextBox Style="{StaticResource HighlightTextBox}" Height="21" HorizontalAlignment="Right" Margin="0,302,717,0" Name="textBox3" Text="{Binding Path=txt検収}" VerticalAlignment="Top" Width="139"/> <TextBox Style="{StaticResource HighlightTextBox}" Height="21" HorizontalAlignment="Left" Margin="169,0,0,336" Name="textBox4" Text="{Binding Path=txt仕入金額,StringFormat={}{0:N0}}" VerticalAlignment="Bottom" Width="139" /> <Label Content="年度プロジェクトコード" Background="LightBlue" Height="21" HorizontalAlignment="Left" Margin="35,52,0,0" Name="label1" VerticalAlignment="Top" Width="127" /> <Label Background="LightBlue" Content="プロジェクト名" Height="21" HorizontalAlignment="Left" Margin="35,82,0,0" Name="label2" VerticalAlignment="Top" Width="127" /> <Label Background="LightBlue" Content="作成日" Height="21" HorizontalAlignment="Left" Margin="35,132,0,0" Name="label3" VerticalAlignment="Top" Width="127" /> <Label Background="LightBlue" Content="部名" Height="21" HorizontalAlignment="Left" Margin="35,166,0,0" Name="label4" VerticalAlignment="Top" Width="127" /> <Label Background="LightBlue" Content="作成者" Height="21" HorizontalAlignment="Left" Margin="35,200,0,0" Name="label5" VerticalAlignment="Top" Width="127" /> <Label Background="LightBlue" Content="販売金額" Height="21" HorizontalAlignment="Left" Margin="35,234,0,0" Name="label6" VerticalAlignment="Top" Width="127" /> <Label Background="LightBlue" Content="販売先名" Height="21" HorizontalAlignment="Left" Margin="35,266,0,0" Name="label7" VerticalAlignment="Top" Width="127" /> <Label Background="LightBlue" Content="検収" Height="21" HorizontalAlignment="Left" Margin="35,300,0,0" Name="label8" VerticalAlignment="Top" Width="127" /> <Label Background="LightBlue" Content="仕入金額" Height="21" HorizontalAlignment="Left" Margin="35,329,0,0" Name="label9" VerticalAlignment="Top" Width="127" /> <v:UserControlFooterN2 Margin="0,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Bottom" /> </Grid> </Window>
ViewModelは下記の通りです。
68行目のpublic ViewModel74(Project project)は、モデルのprojectを引数としています。
91行目のCopyExecute()で、このモデルのデータを122~137行でTextBoxに貼り付けています。
ViewModel
using System; // ObservableCollection using System.Collections.Generic; using System.Linq; //INotifyPropertyChanged //PropertyChanged using System.ComponentModel; using Livet; using Livet.Commands; using Livet.Messaging; using Livet.Messaging.IO; using Livet.EventListeners; //CloseCommand using Livet.Messaging.Windows; using System.Windows.Interactivity; //ICommand using System.Windows.Input; //MessageBox using System.Windows; using Common; using LivetWPFApplication100.ViewModels; using LivetWPFApplication100.Models; namespace LivetWPFApplication100.ViewModels { class ViewModel74 : ViewModel { #region 変更通知プロパティ //---------------------------------------------- public string Parameter { get; set; } public string txtMessage { get; set; } public string txt本日 { get; set; } public string txt状況 { get; set; } public string txt区分 { get; set; } public string txt年度プロジェクトコード { get; set; } public string txtプロジェクト名 { get; set; } public string txt作成日 { get; set; } public string txt作成者 { get; set; } public string txt部名 { get; set; } public int txt販売金額 { get; set; } public string txt販売先名 { get; set; } public string txt検収 { get; set; } public int txt仕入金額 { get; set; } //---------------------------------------------- private Project _Project; public Project Project { get { return _Project; } private set { if (_Project == value) return; _Project = value; RaisePropertyChanged("Project"); } } //---------------------------------------------- #endregion Window win = null; public ViewModel74(Project project) { this.Project = project; txtMessage = "Loaded"; txt本日 = DB.str本日; Loaded = new Livet.Commands.ListenerCommand<Window>((w) => { if (NeedHideOwner && w.Owner != null && w.Owner.Visibility == Visibility.Visible) { win = w; } }); Closing = new Livet.Commands.ListenerCommand<Window>((w) => { if (NeedHideOwner && w.Owner != null) { w.Owner.Show(); } }); CopyExecute(); } public bool NeedHideOwner { get; set; } public ICommand Loaded { get; private set; } public ICommand Closing { get; private set; } public void Initialize() { if (win != null) win.Owner.Hide(); XCloseButtonManager.Disable(); } public void MouseEnterCommand(object sender, RoutedEventArgs e) { txtMessage = "MouseEnter"; } private ViewModelCommand _copyCommand; public ViewModelCommand CopyCommand { get { if (this._copyCommand == null) { this._copyCommand = new ViewModelCommand(CopyExecute, CanCopyExecute); } return this._copyCommand; } } private void CopyExecute() { txt状況 = Project.状況; txt区分 = Project.区分; txt年度プロジェクトコード = Project.年度プロジェクトコード; txt部名 = Project.部名; txtプロジェクト名 = Project.プロジェクト名; txt作成日 = Project.作成日; txt作成者 = Project.作成者; txt販売金額 = Project.販売金額; txt販売先名 = Project.販売先名; txt検収 = Project.検収; txt仕入金額 = Project.仕入金額; } private bool CanCopyExecute() { return true; } #region CloseCommand private ViewModelCommand _CloseCommand; public ViewModelCommand CloseCommand { get { if (_CloseCommand == null) { _CloseCommand = new ViewModelCommand(Close); } return _CloseCommand; } } public void Close() { var window = Application.Current.Windows.OfType<Window>(). SingleOrDefault((w) => w.IsActive); window.Close(); } #endregion #region CancelCommand private ViewModelCommand _CancelCommand; public ViewModelCommand CancelCommand { get { if (_CancelCommand == null) { _CancelCommand = new ViewModelCommand(Cancel); } return _CancelCommand; } } public void Cancel() { } #endregion } }