动态添加datagrid的模板列

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Practices.Prism.ViewModel;
using System.ServiceModel.DomainServices.Client;


using Microsoft.Practices.Prism.Commands;
using System.Linq;
using System.Collections.Generic;
using System.Windows.Data;
using System.ComponentModel;
using System.Text;
using System.Windows.Markup;
using SDSUCCEEDKJ24.ViewModels.Anchor;


namespace SDSUCCEEDKJ24.ViewModels
{
    public class AnchorHistoryDataVM : NotificationObject
    {
        #region Property
       


        private DateTime m_StartTime = DateTime.Today.AddDays(-5);


        public DateTime StartTime
        {
            get { return m_StartTime; }
            set
            {
                m_StartTime = value;
                this.RaisePropertyChanged("StartTime");
            }
        }


        private DateTime m_EndTime = DateTime.Today.AddDays(1);


        public DateTime EndTime
        {
            get { return m_EndTime; }
            set
            {
                m_EndTime = value;
                this.RaisePropertyChanged("EndTime");
            }
        }


        //private EntitySet<SensorView> m_SensorList;


        //public EntitySet<SensorView> SensorList
        //{
        //    get { return m_SensorList; }
        //    set
        //    {
        //        m_SensorList = value;
        //        this.RaisePropertyChanged("SensorList");
        //    }
        //}


        //private SensorView m_SelectedSensor;


        //public SensorView SelectedSensor
        //{
        //    get { return m_SelectedSensor; }
        //    set
        //    {
        //        m_SelectedSensor = value;
        //        this.RaisePropertyChanged("SelectedSensor");
        //    }
        //}




        




        private Visibility m_DataShowRadioButtonVisibility = Visibility.Collapsed;


        public Visibility DataShowRadioButtonVisibility
        {
            get { return m_DataShowRadioButtonVisibility; }
            set
            {
                m_DataShowRadioButtonVisibility = value;
                this.RaisePropertyChanged("DataShowRadioButtonVisibility");
            }
        }


        private Visibility m_ImageShowRadioButtonVisibility = Visibility.Collapsed;


        public Visibility ImageShowRadioButtonVisibility
        {
            get { return m_ImageShowRadioButtonVisibility; }
            set
            {
                m_ImageShowRadioButtonVisibility = value;
                this.RaisePropertyChanged("ImageShowRadioButtonVisibility");
            }
        }


        private Visibility m_LowBrushVisibility;


        public Visibility LowBrushVisibility
        {
            get { return m_LowBrushVisibility; }
            set
            {
                m_LowBrushVisibility = value;
                this.RaisePropertyChanged("LowBrushVisibility");
            }
        }




        private Visibility m_SecondHighBrusVisibility;


        public Visibility SecondHighBrusVisibility
        {
            get { return m_SecondHighBrusVisibility; }
            set
            {
                m_SecondHighBrusVisibility = value;
                this.RaisePropertyChanged("SecondHighBrusVisibility");
            }
        }


        private string m_ShowTitle;


        public string ShowTitle
        {
            get { return m_ShowTitle; }
            set
            {
                m_ShowTitle = value;
                this.RaisePropertyChanged("ShowTitle");
            }
        }


        private string m_MonitorID_str;


        public string MonitorID_str
        {
            get { return m_MonitorID_str; }
            set
            {
                m_MonitorID_str = value;
                this.RaisePropertyChanged("MonitorID_str");
            }
        }


        #endregion


        #region Field
       // private MineMonitoringSystemDomainContext m_db = new MineMonitoringSystemDomainContext();
     
        private System.Windows.Controls.DataGrid m_DataGrid;


        private DomainDataSource m_DomainDataSource;
        #endregion


        public DelegateCommand SelectionChangedCommand { get; set; }


        public AnchorHistoryDataVM(DataGrid dataGrid, DomainDataSource domainDataSource)
        {


            SelectionChangedCommand = new DelegateCommand(() =>
            {
              
                AddColumns();
            });
          //  m_db.Load(m_db.GetSensorViewListByTypeQuery(1)).Completed += new EventHandler(BoreHistoryDataVM_Completed);
            LowBrushVisibility = Visibility.Visible;
            SecondHighBrusVisibility = Visibility.Visible;
            ShowTitle = "锚杆索应力历史数据列表";
            MonitorID_str = "锚杆索编号:";
            m_DataGrid = dataGrid;
            m_DomainDataSource = domainDataSource;
           // m_DomainDataSource.QueryName = "GetAnchorBoltSensorHistoryDataViewByQuery";
        }


       
   
       
        void BoreHistoryDataVM_Completed(object sender, EventArgs e)
        {
            //SensorList = m_db.SensorViews;
            //if (SensorList != null && SensorList.Count > 0)
            //{
            //    SelectedSensor = SensorList.FirstOrDefault();
            //}
        }


        #region 创建拼接DataGridTemplateColumn
        internal static DataGridTemplateColumn GetGridViewColumn(string header, string element)
        {
            DataGridTemplateColumn tempCol = new DataGridTemplateColumn();
            tempCol.Header = header;
          
            StringBuilder cellTemp = new StringBuilder();
            cellTemp.Append("<DataTemplate ");
            cellTemp.Append(" xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'");//和前台界面上的一致
            cellTemp.Append(" xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'");
            cellTemp.Append(" xmlns:local = 'clr-namespace:SDSUCCEEDKJ24.Converters");
            cellTemp.Append(";assembly=SDSUCCEEDKJ24'>");//程序集名称
            cellTemp.Append("<Grid>");
            cellTemp.Append("<Grid.Resources>");          
            cellTemp.Append("<local:BoreWarningValueToForegroundConverter x:Key='ForegroundChangedByWarningValueKey' />");
            cellTemp.Append("</Grid.Resources>");
            cellTemp.Append(element);
            cellTemp.Append("</Grid>");
            cellTemp.Append("</DataTemplate>");


            //string s = cellTemp.ToString();
            tempCol.CellTemplate = (DataTemplate)XamlReader.Load(cellTemp.ToString());


            return tempCol;
        }
        #endregion


        #region 根据传感器动态修改datagri的列,通道信息显示
        public void AddColumns()
        {
           
            //int ColumnNum = m_DataGrid.Columns.Count;
            //if (ColumnNum > 3)
            //{
            //    for (int a = ColumnNum; a > 3; a--)
            //    {
            //        m_DataGrid.Columns.RemoveAt(a-1);
            //    }
            //}
            //String[] strList = new String[4];
            //strList[0] = SelectedSensor.Depth1.ToString();
            //strList[1] = SelectedSensor.Depth2.ToString();
            //strList[2] = SelectedSensor.Depth3.ToString();
            //strList[3] = SelectedSensor.Depth4.ToString();


            //if (SelectedSensor != null)
            //{
            //    for (int i = 1; i <= SelectedSensor.ChannelNum; i++)
            //    {
            //        m_DataGrid.Columns.Add(GetGridViewColumn("通道" + i + "", " <TextBlock Text=\"{Binding Path=Value" + i + "}\"  FontWeight=\"Bold\" Foreground=\"{Binding WarningValueArray" + i + ",Converter={StaticResource ForegroundChangedByWarningValueKey}}\" Style=\"{StaticResource DataGridTextBlockCentered}\" />"));
            //    }
            //}
        }
        #endregion
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值