private void SimulateComboBox(List <object> list, CellBeforeEditEventArgs e) { int currentColIndex = e.Cell.Column; int currentRowIndex = e.Cell.Row; Window window = new Window(); WrapPanel wrapPanel = new WrapPanel(); ListBox listBox = new ListBox(); listBox.SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Hidden); listBox.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, ScrollBarVisibility.Hidden); listBox.Width = _ColumnWidthList.ElementAt(e.Cell.Column); for (int i = 0; i < list.Count; i++) { var item = list.ElementAt(i); ListBoxItem listBoxItem = new ListBoxItem(); listBoxItem.Content = item; listBox.Items.Add(listBoxItem); } listBox.RenderTransform = new ScaleTransform(_Worksheet.ScaleFactor, _Worksheet.ScaleFactor); listBox.MouseDoubleClick += (object obj, MouseButtonEventArgs eventArgs) => { e.EditText = (listBox.SelectedValue as ListBoxItem).Content.ToString(); window.DialogResult = true; }; wrapPanel.Children.Add(listBox); Point point = new Point(); for (int rowIndex = 0; rowIndex <= currentRowIndex + 1; rowIndex++) { point.Y += (int)(_RowHeightList.ElementAt(rowIndex) * _Worksheet.ScaleFactor); } for (int colIndex = 0; colIndex < currentColIndex; colIndex++) { point.X += (int)(_ColumnWidthList.ElementAt(colIndex) * _Worksheet.ScaleFactor); } point.X += (int)(_Worksheet.RowHeaderWidth * _Worksheet.ScaleFactor); Point screenPoint = _ReoGridControl.PointToScreen(point); window.Width = _Worksheet.ColumnHeaders[e.Cell.Column].Width; window.WindowStyle = WindowStyle.None; window.ResizeMode = ResizeMode.NoResize; window.BorderThickness = new Thickness(0); window.Content = wrapPanel; window.SizeToContent = SizeToContent.WidthAndHeight; window.WindowStartupLocation = WindowStartupLocation.Manual; window.Left = screenPoint.X; window.Top = screenPoint.Y; window.Loaded += (object win, RoutedEventArgs routedEventArgs) => { wrapPanel.Width = listBox.RenderSize.Width * _Worksheet.ScaleFactor; wrapPanel.Height = listBox.RenderSize.Height * _Worksheet.ScaleFactor; }; window.ShowDialog(); }