找回密码
 立即注册

QQ登录

只需一步,快速开始

[已处理] 单元格样式问题

swejet 悬赏达人认证 活字格认证
论坛元老   /  发表于:2014-10-11 17:13  /   查看:5568  /  回复:4
单元格是否能改变成增加减少的按钮样式,如下图

4 个回复

倒序浏览
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2014-10-11 17:14:00
沙发
QQ图片20141011170939.jpg (2.7 KB, 下载次数: 213)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-11 18:00:00
板凳
回复 2楼swejet的帖子

抱歉,这个当前无法实现。
回复 使用道具 举报
swejet悬赏达人认证 活字格认证
论坛元老   /  发表于:2014-10-13 10:01:00
地板
回复 3楼iceman的帖子

Silverlight中单元格类型都有哪些,比如说下拉框。。。。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-10-13 15:55:00
5#
回复 4楼swejet的帖子

Spread 中没有单元格类型的概念,是通过 Format 来实现的,替代方案请参考以下代码:

  1. public partial class MainPage : UserControl
  2.     {
  3.         public MainPage()
  4.         {
  5.             InitializeComponent();
  6.             this.gcSpreadSheet1.Sheets.Clear();
  7.             this.gcSpreadSheet1.Sheets.Add(new MyWorksheet() { RowCount = 10, ColumnCount = 8, DefaultColumnWidth = 100, DefaultRowHeight = 28 });
  8.             var sheet = this.gcSpreadSheet1.ActiveSheet;
  9.             sheet.SetValue(0, 0, "General");
  10.             sheet.SetValue(0, 1, "TextBox");
  11.             sheet.SetValue(0, 2, "Slider");
  12.             sheet.SetValue(0, 3, "DatePicker");
  13.             sheet.SetValue(0, 4, "CheckBox");
  14.             sheet.SetValue(0, 5, "ProgressBar");
  15.             sheet.SetValue(0, 6, "ComboBox");
  16.             sheet.SetValue(0, 7, "Button");
  17.             for (var i = 1; i < 10; i++)
  18.             {
  19.                 sheet.SetValue(i, 2, i);
  20.                 sheet.SetValue(i, 3, DateTime.Now + TimeSpan.FromDays(i * 365));
  21.                 sheet.SetValue(i, 4, i % 2 == 0 ? true : false);
  22.                 sheet.SetValue(i, 5, i);
  23.                 sheet.SetValue(i, 6, i % 3);
  24.             }
  25.             var sheet1 = this.gcSpreadSheet1.ActiveSheet as MyWorksheet;
  26.             if (sheet != null)
  27.             {
  28.                 sheet1.DrawingObjectVisible = true;
  29.                 this.gcSpreadSheet1.InvalidateRange(-1, -1, -1, -1);
  30.             }
  31.         }
  32.     }
  33.     public class ControlDrawingObject : CustomDrawingObject
  34.     {
  35.         private Control _rootElement;
  36.         public ControlDrawingObject(int row, int col, Control control) : base(row, col) { _rootElement = control; this.ShowDrawingObjectOnly = true; }
  37.         public override FrameworkElement RootElement
  38.         {
  39.             get { _rootElement.Margin = new Thickness(1); return _rootElement; }
  40.         }
  41.     }
  42.     public class MyWorksheet : Worksheet
  43.     {
  44.         public bool DrawingObjectVisible { get; set; }
  45.         public override DrawingObject[] GetDrawingObject(int row, int column, int rowCount, int columnCount)
  46.         {
  47.             if (row == 0 || !this.DrawingObjectVisible) return base.GetDrawingObject(row, column, rowCount, columnCount);

  48.             DrawingObject dobj;

  49.             if (column == 7)
  50.             {
  51.                 dobj = new ControlDrawingObject(row, column, new Button() { Content = "Delete" });
  52.             }
  53.             else if (column == 6)
  54.             {
  55.                 int value = -1;
  56.                 object obj = this.GetValue(row, column);
  57.                 if (obj != null)
  58.                 {
  59.                     if (obj is int) value = (int)obj;
  60.                     else
  61.                     {
  62.                         int.TryParse(obj.ToString(), out value);
  63.                     }
  64.                     if (value > 2) value = -1;
  65.                 }
  66.                 ComboBox control = new ComboBox();
  67.                 control.Items.Add("Fruit");
  68.                 control.Items.Add("Vegetable");
  69.                 control.Items.Add("Food");
  70.                 if (value >= -1 &amp;&amp; value < control.Items.Count)
  71.                     control.SelectedIndex = value;
  72.                 control.SelectionChanged += delegate(object sender, SelectionChangedEventArgs e)
  73.                 {
  74.                     this.SetValue(row, column, control.SelectedIndex);
  75.                 };
  76.                 dobj = new ControlDrawingObject(row, column, control);
  77.             }
  78.             else if (column == 5)
  79.             {
  80.                 double value = 0;
  81.                 object obj = this.GetValue(row, column);
  82.                 if (obj != null)
  83.                 {
  84.                     if (obj is double) value = (double)obj;
  85.                     else if (obj is int) value = (int)obj;
  86.                     else
  87.                     {
  88.                         double.TryParse(obj.ToString(), out value);
  89.                     }
  90.                 }
  91.                 dobj = new ControlDrawingObject(row, column, new ProgressBar() { Value = value, Maximum = 10 });
  92.             }
  93.             else if (column == 4)
  94.             {
  95.                 bool value = false;
  96.                 object obj = this.GetValue(row, column);
  97.                 if (obj != null)
  98.                 {
  99.                     if (obj is bool) value = (bool)obj;
  100.                     else
  101.                     {
  102.                         bool.TryParse(obj.ToString(), out value);
  103.                     }
  104.                 }
  105.                 CheckBox control = new CheckBox() { IsChecked = value, Content = "Check Me" };
  106.                 control.Checked += delegate(object sender, RoutedEventArgs e)
  107.                 {
  108.                     this.SetValue(row, column, control.IsChecked);
  109.                 };
  110.                 control.Unchecked += delegate(object sender, RoutedEventArgs e)
  111.                 {
  112.                     this.SetValue(row, column, control.IsChecked);
  113.                 };
  114.                 dobj = new ControlDrawingObject(row, column, control);
  115.             }
  116.             else if (column == 3)
  117.             {
  118.                 DateTime? value = null;
  119.                 object obj = this.GetValue(row, column);
  120.                 if (obj != null)
  121.                 {
  122.                     if (obj is DateTime) value = (DateTime)obj;
  123.                     else
  124.                     {
  125.                         DateTime date;
  126.                         if (DateTime.TryParse(obj.ToString(), out date))
  127.                         {
  128.                             value = date;
  129.                         }
  130.                     }
  131.                 }
  132.                 DatePicker control = new DatePicker() { SelectedDate = value };
  133.                 control.LostFocus += delegate(object sender, RoutedEventArgs e)
  134.                 {
  135.                     this.SetValue(row, column, control.SelectedDate);
  136.                 };
  137.                 dobj = new ControlDrawingObject(row, column, control);
  138.             }
  139.             else if (column == 2)
  140.             {
  141.                 double value = 0;
  142.                 object obj = this.GetValue(row, column);
  143.                 if (obj != null)
  144.                 {
  145.                     if (obj is double) value = (double)obj;
  146.                     else if (obj is int) value = (int)obj;
  147.                     else
  148.                     {
  149.                         double.TryParse(obj.ToString(), out value);
  150.                     }
  151.                 }
  152.                 Slider control = new Slider() { Value = value, Maximum = 10 };
  153.                 control.LostFocus += delegate(object sender, RoutedEventArgs e)
  154.                 {
  155.                     this.SetValue(row, column, control.Value);
  156.                 };
  157.                 dobj = new ControlDrawingObject(row, column, control);
  158.             }
  159.             else if (column == 1)
  160.             {
  161.                 string value = this.GetText(row, column);
  162.                 TextBox control = new TextBox() { Text = value };
  163.                 control.LostFocus += delegate(object sender, RoutedEventArgs e)
  164.                 {
  165.                     this.SetValue(row, column, control.Text);
  166.                 };
  167.                 dobj = new ControlDrawingObject(row, column, control);
  168.             }
  169.             else
  170.             {
  171.                 return base.GetDrawingObject(row, column, rowCount, columnCount);
  172.             }
  173.             return new DrawingObject[] { dobj };
  174.         }
  175.     }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部