`

work_代码添加

 
阅读更多
<UserControl x:Class="WpfCtrlLib.Ui.QuotesCtrl.QuotesCard"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300"
             HorizontalAlignment="Stretch"  VerticalAlignment="Stretch"
             >

    <Grid Name="gQuotesCard" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <Grid.Resources>
            <Style TargetType="DataGridCell" x:Key="cellStyle">
                <Setter Property="Foreground" Value="White"/>
            </Style>
        </Grid.Resources>
        <Grid.RowDefinitions>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <DataGrid Grid.Row="0" x:Name="gQuotesCardList" CanUserSortColumns="True" FrozenColumnCount="1" Margin="2">
        </DataGrid>
    </Grid>
    
</UserControl>



using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml;
using System.Xml.Linq;
using WpfCtrlLib.Model.Quotes;
using WpfCtrlLib.Pub;
using WpfCtrlLib.Service.Quotes;
using WpfCtrlLib.Service.Quotes.Imp;
using WpfCtrlLib.Ui.UserCtrl;
using WpfCtrlLib.Util;
namespace WpfCtrlLib.Ui.QuotesCtrl
{
    /// <summary>
    /// QuotesCard.xaml 的交互逻辑
    /// </summary>
    public partial class QuotesCard : UserControl
    {
        private IQuotesPubService qcs = new QuotesPubServiceImpl();
       
        public QuotesCard()
        {
            InitializeComponent();

            DataGrid dg = new DataGrid();
            List<Colums> list = qcs.getColumns();
            double totalWidth = 1000;
            Window win = Mgr.CurrentWindow;
            if (win.Name == "quotes")
            {
                WinQuotes quotes = (WinQuotes)win;
                QuotesPanel qp = quotes.qPanel;
                QuotesContent qc = qp.Price;
                qc.UpdateLayout();
                //totalWidth = qc.ActualWidth;
            }
            else if (win.Name == "winTradeAndQuotes")
            {
                WinTradeAndQuotes tradeAndQuotes = (WinTradeAndQuotes)win;
                QuotesPanel qp = tradeAndQuotes.quotesPanel;
                QuotesContent qc = qp.Price;
                qc.UpdateLayout();
                //totalWidth = qc.ActualWidth;
            }
            totalWidth = totalWidth - 9;
            this.gQuotesCard.Width = totalWidth;
            double width = totalWidth / list.Count;
            //
            for (int i = 0; i < list.Count; i++)
            {
                DataGridTextColumn dtc = new DataGridTextColumn();
                dtc.Header = StringUtil.I18N(list[i].Name);
                Binding bind = new Binding(list[i].Name);
                //PriceDataConverter con=new PriceDataConverter();
                //bind.Converter = con;
                dtc.Binding = bind;
                dtc.Width = width;

                dtc.IsReadOnly = true;
                Style style = new Style(typeof(DataGridCell));
                Setter set = new Setter(DataGridCell.ForegroundProperty, Brushes.Red);
                Setter set1 = new Setter(DataGridCell.BackgroundProperty, Brushes.Black);
                style.Setters.Add(set);
                dtc.CellStyle = style;
                Style headerStyle = new Style(typeof(DataGridColumnHeader));
                Setter headerSet = new Setter(DataGridCell.ForegroundProperty, Brushes.DarkGray);
                headerStyle.Setters.Add(headerSet);
                headerStyle.Setters.Add(set1);
                dtc.HeaderStyle = headerStyle;

                dg.Columns.Add(dtc);
            }
            dg.Background = Brushes.Black;
            this.gQuotesCard.Children.Add(dg);
        }

        public QuotesCard(List<FQContract> contracts)
        {
            InitializeComponent();
            try
            {
                //DataGrid dg = new DataGrid();
                DataGrid dg = this.gQuotesCardList;
                List<Colums> list = qcs.getColumns();

                //this.gQuotesCard.UpdateLayout();
                //double w = this.gQuotesCard.ActualWidth;;

                double totalWidth = 1000;
               // Window win = Mgr.CurrentWindow;
                if (Mgr.WinQuote!=null) {
                    WinQuotes quotes = (WinQuotes)Mgr.WinQuote;
                    QuotesPanel qp = quotes.qPanel;
                    QuotesContent qc = qp.Price;
                    qc.UpdateLayout();
                    //totalWidth = qc.ActualWidth;
                }
                else if (Mgr.WinTradeAndQuote!=null)
                {
                    WinTradeAndQuotes tradeAndQuotes = (WinTradeAndQuotes)Mgr.WinTradeAndQuote;
                    QuotesPanel qp = tradeAndQuotes.quotesPanel;
                    QuotesContent qc = qp.Price;
                    qc.UpdateLayout();
                    //totalWidth = qc.ActualWidth;
                }
               // totalWidth = totalWidth;
                //this.gQuotesCard.Width = totalWidth;
                //this.gQuotesCard.UpdateLayout();
                //double width = totalWidth/ list.Count;
                //
                for (int i = 0; i < list.Count; i++)
                {

                    DataGridTextColumn dtc = new DataGridTextColumn();
                    dtc.Header = StringUtil.I18N(list[i].Name);
                    Binding bind = new Binding(list[i].Name);
                    if (list[i].Name == "NewPrice" || list[i].Name == "OpenPrice" || list[i].Name == "HighPrice" || list[i].Name == "ClosePrice" || list[i].Name == "BuyPrice" || list[i].Name == "SellPrice" || list[i].Name == "AvgPrice" || list[i].Name == "LowPrice")
                    {
                        PriceDataConverter priceConverter=new PriceDataConverter();
                        bind.Converter = priceConverter;
                    }
                    //dtc.Foreground = Brushes.White;
                    dtc.Binding = bind;
                    //dtc.Width = new DataGridLength();
                    dtc.IsReadOnly = true;

                    Style style = new Style(typeof(DataGridCell));
                    Setter set = new Setter(DataGridCell.ForegroundProperty, Brushes.Red);
                   Setter set1 = new Setter(DataGridCell.BackgroundProperty,Brushes.Black);
                    style.Setters.Add(set);
                    dtc.CellStyle = style;
                    Style headerStyle = new Style(typeof(DataGridColumnHeader));
                    Setter headerSet = new Setter(DataGridCell.ForegroundProperty, Brushes.DarkGray);
                    headerStyle.Setters.Add(headerSet);
                    headerStyle.Setters.Add(set1);
                    dtc.HeaderStyle = headerStyle;
                    //设置宽度
                    //DataGridLength.SizeToCells.;
                    //dtc.Width = DataGridLength.Auto;
                    dg.GridLinesVisibility = DataGridGridLinesVisibility.None;//设置没有边框
                    dg.Columns.Add(dtc);
                    
                }
                //获取合同信息
                ObservableCollection<QuotesPlateModel> oc = new ObservableCollection<QuotesPlateModel>();

                List<QuotesPlateModel> contractsList = qcs.getPalteContractsInfo(contracts);
                for (int i = 0; i < contractsList.Count; i++)
                {
                   oc.Add(contractsList[i]);
                }
                //设置行样式
                Style rowStyle=new Style(typeof(DataGridRow));
                Trigger rowTrigger = new Trigger();//触发器
                rowTrigger.Property = DataGridRow.IsMouseOverProperty;
                rowTrigger.Value = true;
                Setter trggerSet = new Setter(DataGridRow.BackgroundProperty, Brushes.Gold);
                Setter rowSet = new Setter(DataGridRow.BackgroundProperty, Brushes.Black);
                rowTrigger.Setters.Add(trggerSet);
                rowStyle.Setters.Add(rowSet);
                rowStyle.Triggers.Add(rowTrigger);
                dg.RowStyle=rowStyle;

                dg.CanUserAddRows = false;
                dg.AutoGenerateColumns = false;
                dg.HeadersVisibility = DataGridHeadersVisibility.Column;
                dg.ItemsSource = oc;


                /*DataGrid添加行双击击事件*/
                dg.MouseDoubleClick += (object sender, MouseButtonEventArgs e) =>
                {
                    Point aP = e.GetPosition(dg);
                    IInputElement obj = dg.InputHitTest(aP);
                    DependencyObject target = obj as DependencyObject;


                    while (target != null)
                    {
                        if (target is DataGridRow)
                        {
                            break;
                        }
                        target = VisualTreeHelper.GetParent(target);
                    }

                    DataGridRow row = target as DataGridRow;
                    if (row == null || row.DataContext == null) return;
                    QuotesPlateModel model = row.DataContext as QuotesPlateModel;

                    if (model == null) return;
                   
                    Mgr.FlashService.Show(model.ContractID);

                };
                //添加选中事件
               // dg.MouseDown+=dg_MouseDown;
                dg.Background = Brushes.Black;
                dg.SelectionChanged+=new SelectionChangedEventHandler(dg_SelectionChanged);
                //this.gQuotesCard.Children.Add(dg);
            }
            catch (AppException app)
            {
                MessageBox.Show(app.Message, StringUtil.I18N("sys_info"), MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                string errString = ex.Message;
                Console.WriteLine("=================errString:" + errString);
                MessageBox.Show(errString);
                //MessageBox.Show(StringUtil.I18N("sys_operation_failed"), StringUtil.I18N("sys_info"), MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
        /// <summary>
        /// 选中事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dg_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {

                DataGrid dg = (DataGrid)sender;
                var items = dg.SelectedItems;
                if (items.Count > 0) {
                    QuotesPlateModel model = (QuotesPlateModel)items[0];
                    //qcs.updatePriceStatistics(model);
                }
            }
            catch (AppException app)
            {
                MessageBox.Show(app.Message, StringUtil.I18N("sys_info"), MessageBoxButton.OK, MessageBoxImage.Information);
            }
            catch (Exception ex)
            {
                string errString = ex.Message;
                Console.WriteLine("=================errString:" + errString);
                MessageBox.Show(StringUtil.I18N("sys_operation_failed"), StringUtil.I18N("sys_info"), MessageBoxButton.OK, MessageBoxImage.Information);
            }
        }
        

        
    }
    //控制表格价格的显示
    [ValueConversion(typeof(string), typeof(string))]
    public class PriceDataConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string result = "--";
            string v = value.ToString();
            if (v == "--")
            {
                return result;
            }
            result = StringUtil.GetPriceData(v, true);
            //result = StringUtil.GetPrice(v);
            return result;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

分享到:
评论

相关推荐

    gpio-beeper.rar_The Work_schedule_work

    `来安排工作,将`beep_work_handler`添加到工作队列中,等待执行。这可以是基于定时器、用户输入或其他系统事件触发的。 5. **中断处理程序**:如果蜂鸣器的开关需要在中断上下文中进行,代码可能还包括一个中断...

    work_bg 一键式配套系统

    3. **定制化工作流**:work_bg支持自定义工作流程模板,用户可以根据自己的需求设置步骤和顺序,实现个性化的工作流程,如代码编译、测试执行、持续集成/持续部署(CI/CD)等。 4. **版本控制**:集成版本控制系统...

    irq_work.rar_Work It

    在Linux内核中,你可以使用`irq_work_queue()`函数将一个`irq_work`结构体添加到工作队列,然后在适当的时间(即退出中断处理后),`irq_work_run()`会执行这些被排队的工作。 在描述中提到的“Claim the entry so ...

    Work_Reader

    在技术层面上,Work_Reader的更新可能涉及到代码重构、错误修复和性能优化。例如,可能对内存管理进行了优化,减少了软件运行时的内存占用,提升了运行效率;或是对特定API的调用进行了调整,以适应更多种类的设备。...

    work_log.rar_VS2005 入门_vs2005_work l_日志_日志 数据库

    3. **错误处理**:在关键代码段中添加异常处理逻辑,捕获可能出现的错误,并将其记录为日志。这样可以帮助开发者迅速定位问题所在。 4. **日志存储**:日志可以存储在本地文件系统、数据库或网络共享位置。本例中...

    work_log测试模块_

    "work_log测试模块_" 提供的是一套用于日志处理的代码,旨在实现模块化的日志记录功能,使得程序员可以更便捷地在各自的模块中集成日志功能。下面我们将深入探讨这个测试模块的核心知识点。 首先,`MyLog.cpp`和`...

    第2章_Quartus_II_使用方法.zip_The Work_quartus 2_quartus II

    2. **源代码输入**:在工程中添加VHDL或Verilog源文件,这些文件包含了要实现的逻辑电路描述。用户也可以导入IP核( Intellectual Property cores),这些都是预先设计好的功能模块,可直接在设计中复用。 3. **...

    5_workqueue

    然后,使用`init_work()`函数初始化这个工作项,并使用`queue_work()`将其添加到工作队列。一旦添加,调度器会在未来的某个时间点调用`worker_thread()`来执行这个工作。 工作队列的设计考虑到内核的实时性和响应性...

    Work_Day_Scheduler_W5

    同时,JavaScript可能被用来实现动态功能,如添加、删除或修改任务,以及在特定时间提醒用户。 考虑到压缩包子文件的文件名称列表仅有一个“Work_Day_Scheduler_W5-main”,这可能是一个项目的主目录,里面可能包含...

    ffmpeg-0.9.2.tar.gz_Work It_ffmpeg_linux ffmpeg

    核心的 ffmpeg 工具可以用来进行格式转换、编码、解码、剪辑、添加水印、调整分辨率等任务,支持众多的视频和音频格式,如 MP4、AVI、FLV、MP3、AAC 等。 在Linux中,通常使用命令行来操作 FFmpeg。安装这个0.9.2...

    work_out_tracker

    例如,在这个应用中,用户可能需要添加新的锻炼记录,这时JavaScript会找到相应的表单元素,处理用户的输入,并将新数据插入到页面的展示区域。 事件处理是用户界面交互的基础。通过监听用户的点击、提交等行为,...

    javaee_work_ssm_sys:javaEE课建车票管理系统ssm框架先前源代码仓库

    2. 车次管理:添加、删除、修改车次信息,包括出发地、目的地、时间、票价等。 3. 订单管理:用户购票、退票、订单查询等功能。 4. 座位管理:分配、取消座位,显示座位状态。 5. 支付接口:集成第三方支付平台,...

    PDF添加书签javascript代码

    this seems to only work // properly when invoked from a context menu } ``` 这个代码的核心功能包括: 1. **SaveData**:这是一个用于序列化数据并存储到全局变量的函数。它接收一个二维数组作为参数,然后...

    INT203_6213050017_Groupwork_4

    【压缩包子文件的文件名称列表】"INT203_6213050017_Groupwork_4-master"是压缩包内的唯一文件,通常在GitHub等版本控制系统中,“master”分支指的是项目的主分支,包含项目的核心代码或资源。在这个案例中,它可能...

    LearnSpringMaven_All_Work_With_Beans

    创建一个新的Maven项目时,Eclipse会自动生成一个基础的POM.xml文件,开发者可以在这个文件中添加项目依赖,如Spring框架的核心库。 接下来,我们进入Spring框架的学习。Spring是一个开源的Java平台,它提供了全面...

    INT203_62130500050_groupwork_03

    标题“INT203_62130500050_groupwork_03”和描述“INT203_62130500050_groupwork_03”似乎指的是一个项目或者课程作业,可能属于INT203这门课程的一部分,编号为62130500050,而“groupwork_03”则可能代表这是第三...

    work12_24.zip

    【描述】描述中的"work12_24.zip"表明这可能是一个与工作相关的文件集合,可能包含了项目文件、文档、代码、图像或其他资源。"work12_24"的命名方式可能代表特定的工作周期,例如12月24日完成的任务或者第12周第24天...

    FlowMap技术映射算法(WIP) 的Rust实现_rust_代码_下载

    在工作在进程(Work In Progress,WIP)阶段的FlowMap实现中,开发者可能正在逐步完善算法的各个部分,如数据结构优化、性能调优、错误处理等。 Rust是一种现代的系统级编程语言,它的设计目标是提供高性能、内存...

    Pop3_Server.rar_POP3_server_Work It_delphi pop3_pop3

    在描述中提到的"pop3 server...it s show that pop3 s work process with delphi..."意味着这个资源将深入解释POP3服务器的工作原理,并展示如何使用Delphi来构建这样的服务器。下面我们将详细讨论POP3协议和使用...

Global site tag (gtag.js) - Google Analytics