单击WPF按钮时打印运行时文本模板的内容

时间:2018-09-25 13:07:00

标签: c# wpf printing reporting

我的WPF项目中有运行时文本模板文件。我尝试做的是单击WPF按钮时打印运行时文本模板文件的内容。这是我有的示例代码:

 **ReportTemplate.tt** 

        <#@ template language="C#" #>
        <#@ assembly name="System.Core" #>
        <#@ import namespace="System.Linq" #>
        <#@ import namespace="System.Text" #>
        <#@ import namespace="System.Collections.Generic" #>
        <#@ parameter name="Model" type="Model.TicketData"#>
        <html>
        <head><br/>
            <style type="text/css">
                    body { font-family: Calibri;width:150; margin:0}
                    table { text-align:center; }<br/>
                    .container {width:300px;height:100}
            </style>
        </head>
        <body>
        <div class="container">
        <header><h3 style="text-align:center"><#=Properties.Settings.Default.Logo#></h3>
    </header>
           <hr/>]
                <h1 style="text-align:center;">Ticket #</h1>
                <h1 style="text-align:center;"><#=Model.TokenNumber#></h1>
            <hr/>
            <table style="width:100%; margin:0">
                <thead><th>Desk</th><th>Date</th><th>Time</th></thead>
                <tr>
                    <td><#=Model.DeskName#></td>
                    <td><#=Model.Date#></td>
                    <td><#=Model.Time#></td>
                </tr>
            </table>
            <hr/>
        <div>
        </body>
        </html>

这是我项目中名为“模型”的文件夹中的模型类
     TicketData.cs

public class TicketData
 {

        public string Date { get; set; }
        public string Time { get; set; }
        public string Agency { get; set; }
        public string DeskName { get; set; }
        public int TokenNumber { get; set; }
}

这是一个具有按钮的UserControl窗口,这样,当单击该按钮时,我希望它在Real Pos热敏打印机中打印 ReportTemplate.tt 的内容

TokenView.xaml

public partial class TokenView : UserControl
    {


        Button btn;
        String keyword;
        ReportTextTemplate rpt;
        public TokenView()
        {
            InitializeComponent();

            loadTT();

        }
        public void loadTT()
        {
            Random rnd = new Random();
            int token = rnd.Next(32);

            rpt = new ReportTextTemplate();
            rpt.Session = new Dictionary<string, object>();
            rpt.Session["Model"] = new TicketData
            {
                TokenNumber = token,
                DeskName = "Conveyance",
                Date = System.DateTime.Now.ToString("dd/MM/yy"),
                Time = DateTime.Now.ToString("hh:mm tt"),
                Agency = Properties.Settings.Default.Logo,
            };
            rpt.Initialize();
        }
  private void btnPrintTicket(object sender, RoutedEventArgs e)
        {
             btn = (Button)sender;
             keyword = btn.Content.ToString();

            Debug.Print(rpt.TransformText());

          }

      }

请提供任何帮助。 谢谢你们...

0 个答案:

没有答案