Поддержка WPF

Начиная с версии 0.8.7 ReoGrid поддерживает платформу WPF, прорисовка интерфейса пользователя и управление содержимым таблицы разделено между двумя модулями в 0.8.7.
Для прорисовки ReoGrid использует абстрактный интерфейс, позволяющий прорисовывать компонент как для Windows Form, так и для платформы WPF, используя всё тот же API.

reogrid_087_construction

Элементы управления для обеих платформ используют единую библиотеку кода управления содержимым электронной таблицы, обеспечивая единые API и библиотеку классов. Один файл шаблона электронной таблицы (формат ReoGrid XML) или файл формата Excel (доступно с версии 0.8.8) может отображаться на обеих платформах.

155

Добавление табличного компонента в XAML

Добавьте ссылку на библиотеку ReoGrid в целевой проект, отредактируйте XAML файл как показано ниже:

Файл MainWindow.xaml:

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:rg="clr-namespace:unvell.ReoGrid;assembly=unvell.ReoGrid"
  x:Class="WPFDemo.MainWindow" Title="MainWindow" Height="640" Width="800">
  <Grid>

    <rg:ReoGridControl x:Name="grid" >
    </rg:ReoGridControl>

  </Grid>
</Window>

Убедитесь, что пространство имен объявлено в списке атрибутов окна контейнера, определите ReoGridControl внутри тега Grid, получите следующий результат:
153

В приведённом коде вызываем API листа для ввода данных и применения стилей:

// получение текущего экземпляра листа
var worksheet = grid.CurrentWorksheet;

// получение ссылки на диапазон
var range = worksheet.Ranges["B2:C3"];

// сляние ячеек диапазона
range.Merge();

// установка стиля диапазона
range.Style.BackColor = Graphics.SolidColor.LightYellow;
range.BorderOutside = RangeBorderStyle.BlackSolid;

// Добавление данных
range.Data = "Привет, мир!";

Result:

154

API в WPF-издании полностью идентичен таковому для Windows form, см. документацию на английском.

Загрузка файла шаблона таблицы

Установим атрибут LoadFromFile для загрузки шаблона электронной таблицы из файла:

<rg:ReoGridControl LoadFromFile="order_sample.rgf" x:Name="grid" >
</rg:ReoGridControl>

После запуска этого примера будет отображен шаблон электронной таблицы. Определённый её диапазон ячеек можно будет заполнить данными с помощью следующего кода:

public MainWindow()
{
  InitializeComponent();

  grid.CurrentWorksheet.FileLoaded += CurrentWorksheet_FileLoaded;
}

void CurrentWorksheet_FileLoaded(object sender, unvell.ReoGrid.Events.FileLoadedEventArgs e)
{
  var worksheet = grid.CurrentWorksheet;
  var dataRange = worksheet.Ranges["A21:G35"];
  dataRange.Data = new object[,]
  {
    {"[23423423]", "Продукт ABC", 15, 150, 2250},
    {"[45645645]", "Продукт DEF", 1, 75, 75},
    {"[78978978]", "Продукт GHI", 2, 30, 60},
  };
}

Результат:

155
[include]/var/local/wordpress/uploads/reogrid.net/2014/08/wpf-features.html[/include]
Подробности можно узнать на странице новостей версии 0.8.7.