###前提・実現したいこと
WPFとC#で、機械メンテナンス日報用のアプリケーションを作っています。ボタンをクリックすることで予めxamlとして用意しておいたカレンダーを動的に表示させたいのですが、どうしても出来ません。
表示させたいのはツールボックスで定義してある標準のCalendarで、作業日時の入力を簡単にするために実装を考えています。
また、デザイナで確認したいので、動的にコントロール内容を生成するのは自分自身で禁止しています。試行錯誤で、色々なコードが混じっていますが、よろしくお願い致します。
###該当のソースコード
MainWindow.xaml.cs
cs
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using System.Windows; 7using System.IO; 8using System.Xml; 9using System.Xaml; 10using System.Windows.Controls; 11using System.Windows.Data; 12using System.Windows.Documents; 13using System.Windows.Input; 14using System.Windows.Media; 15using System.Windows.Media.Imaging; 16using System.Windows.Navigation; 17using System.Windows.Shapes; 18 19namespace WpfPrintReportSample.Views 20{ 21 /// <summary> 22 /// MainWindow.xaml の相互作用ロジック 23 /// </summary> 24 public partial class MainWindow : Window 25 { 26 public MainWindow() 27 { 28 InitializeComponent(); 29 } 30 31 private void CalendarButton_Click(object sender, RoutedEventArgs e) 32 { 33 using (var sr = new StreamReader("Views/CalendarControl1.xaml")) 34 { 35 StackPanel Wkstart_stack = this.FindName("WkStartPanel") as StackPanel; 36 Calendar Wkstart_cal = new WpfPrintReportSample.Views.; 37 /// var Calxml = XmlReader.Create(sr.BaseStream); 38 /// var ctrls = as UIElement; 39 Wkstart_stack.Children.Add("Views/CalendarControl1.xaml"); 40 /// var ctrls = XamlReader as UIElement; 41 /// var item = new TabItem() 42 { 43 }; 44 } 45 } 46 }
MainWindow
xaml
1<UserControl x:Class="WpfPrintReportSample.Reports.ReportSample" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6 xmlns:vm="clr-namespace:WpfPrintReportSample.ViewModels" 7 mc:Ignorable="d" 8 d:DesignHeight="1122.52" d:DesignWidth="793.70"> 9 <UserControl.DataContext> 10 <vm:MainWindowViewModel /> 11 </UserControl.DataContext> 12 <Grid> 13 <TextBlock x:Name="WkStart_Copy" 14 FontSize="21.333" Margin="43,16,84,0" FontFamily="HGSKyokashotai" IsEnabled="False" RenderTransformOrigin="0.5,0.5" 15 Foreground="Black" Height="34" Padding="2.5,2.5,2.5,2" Text="サ ー ビ ス 報 告 書" HorizontalAlignment="Center" VerticalAlignment="Top" TextDecorations="Underline" /> 16 <StackPanel x:Name="CustomerStackP" HorizontalAlignment="Left" Height="245" Margin="10,80,0,0" VerticalAlignment="Top" Width="740" SnapsToDevicePixels="True"> 17 <TextBlock x:Name="WkStart" 18 FontSize="21.333" Margin="44,16,29,0" FontFamily="HGSKyokashotai" IsEnabled="False" RenderTransformOrigin="0.5,0.5" 19 Foreground="Black" Height="34" VerticalAlignment="Top" Padding="2.5,2.5,2.5,2" Text="作業開始: 平成29年01月25日" /> 20 <TextBlock x:Name="WkEnd" 21 FontSize="21.333" Margin="43,1,30,0" FontFamily="HGSKyokashotai" IsEnabled="False" RenderTransformOrigin="0.5,0.5" 22 Foreground="Black" Height="34" VerticalAlignment="Top" Padding="2.5,2.5,2.5,2" Text="作業終了: 平成29年01月25日" /> 23 <TextBlock x:Name="WkEnd_Copy" 24 FontSize="21.333" Margin="43,1,30,0" FontFamily="HGSKyokashotai" IsEnabled="False" RenderTransformOrigin="0.5,0.5" 25 Foreground="Black" Height="34" VerticalAlignment="Top" Padding="2.5,2.5,2.5,2" Text="合計作業時間: 時間" /> 26 <TextBlock x:Name="WkEnd_Copy1" 27 FontSize="21.333" Margin="43,1,30,0" FontFamily="HGSKyokashotai" IsEnabled="False" RenderTransformOrigin="0.5,0.5" 28 Foreground="Black" Height="34" VerticalAlignment="Top" Padding="2.5,2.5,2.5,2" TextDecorations="Underline" Text="{Binding Text}" /> 29 </StackPanel> 30 <Separator HorizontalAlignment="Left" Height="10" Margin="10,325,0,0" VerticalAlignment="Top" Width="755"/> 31 <StackPanel Margin="10,340,-10,588"> 32 <TextBlock x:Name="sonson" 33 FontSize="21.333" Margin="43,16,30,0" FontFamily="HGSKyokashotai" IsEnabled="False" RenderTransformOrigin="0.5,0.5" 34 Foreground="Black" Height="34" VerticalAlignment="Top" Padding="2.5,2.5,2.5,2" FontStyle="Italic" Text="作業開始: 平成29年01月25日" /> 35 </StackPanel> 36 </Grid> 37</UserControl> 38
カレンダーコントロールのソース
xaml
1<!-- x:Class="WpfPrintReportSample.Views.CalendarControl1" --> 2<UserControl 3 x:Class="WpfPrintReportSample.Views.CalendarControl1" 4 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 5 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 6 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 7 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 8 xmlns:local="clr-namespace:WpfPrintReportSample.Views" 9 mc:Ignorable="d" 10 d:DesignHeight="300" d:DesignWidth="300"> 11 <Grid RenderTransformOrigin="0.5,0.5" Margin="-13,16,120,102"> 12 <Grid.RenderTransform> 13 <TransformGroup> 14 <ScaleTransform/> 15 <SkewTransform/> 16 <RotateTransform Angle="-14.781"/> 17 <TranslateTransform/> 18 </TransformGroup> 19 </Grid.RenderTransform> 20 <Calendar HorizontalAlignment="Left" VerticalAlignment="Top"/> 21 22 </Grid> 23</UserControl>
###試したこと
以下のページを参考にしました。
動的にXAMLを表示する。
XMLの読み出し(XmlReader)
WPF 動的パネルは結構便利
###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio Community 2015にて作成しています
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/13 23:08
2017/01/14 01:33
2017/01/14 19:51
2017/02/03 06:43