AutoSize ElementHost в панели действий Excel 2003 - PullRequest
2 голосов
/ 22 мая 2009

Я размещаю диаграмму WPF в панели действий Excel 2003. Диаграмма настроена на растяжение как по горизонтали, так и по вертикали, однако, хотя ElementHost и диаграмма заполняют область действий горизонтально, я не нашел способа включить заполнение элемента по вертикали. Единственное свойство, которое, по-видимому, влияет на макет ElementHost, - это свойства Высота и Размер. Anchor, Dock, AutoSize, похоже, не влияют на макет ни на объект ActionsPane, ни на объект ElementHost.

Я что-то упустил?

С уважением,

Danny

// A snippet from ThisWorkbook.cs
public partial class ThisWorkbook
{
    private void ThisWorkbook_Startup(object sender, System.EventArgs e)
    {

        var ap = Globals.ThisWorkbook.ActionsPane;
        ap.Clear();
        ap.Visible = true;
        var plotControl1 = new Swordfish.WPF.Charts.TestPage();
        var elementHost1 = new System.Windows.Forms.Integration.ElementHost();
        elementHost1.AutoSize = true; // Doesn't seem to have an effect.
        elementHost1.Child = plotControl1;

        ap.Controls.Add(elementHost1);

    }

1 Ответ

3 голосов
/ 04 января 2010

создайте пользовательскую форму WPF с именем my ActionPane и разместите ее в ElementHost. Вот как я сделал сам ElementHost:

private void ThisDocument_Startup(object sender, System.EventArgs e)
    {
        ActionPane actionPaneControl = new ActionPane();
        this.ActionsPane.Resize += new EventHandler(ActionsPane_Resize);
        this.ActionsPane.Controls.Add(new ElementHost { Child = actionPaneControl, AutoSize = true });
    }

По сути, я подписываюсь на событие ActionsPane Resize и основываюсь на объекте ElementHost. Это дает дополнительное побочное преимущество WPF contorl (как с вертикальным, так и с горизонтальным растяжением), изменяющего размеры вместе с окном приложения Office

void ActionsPane_Resize(object sender, EventArgs e)
    {
        ((this.ActionsPane.Controls[0] as ElementHost).Child as ActionPane).Height = this.ActionsPane.Height;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...