Связать с WindowsFormsHost

Я пытаюсь привязать список элементов к TabControl. Элементы выглядят так:

class SciEditor
{
    private Scintilla editor = null;
    public System.Windows.Forms.Control Editor
    {
        get { return editor; }
    }

    private string path = null;
    public string ShortName
    {
        get
        {
            return null == path ? "New Script" : Path.GetFileNameWithoutExtension(path);
        }
    }
    ....

В моем главном окне список называется «allScripts». Вот XAML:

<TabControl Grid.Row="0" Grid.Column="0" Name="tabControl1">
            <TabControl.ItemTemplate>
                <DataTemplate>
                    <TextBlock>                            
                        <TextBlock Text="{Binding ShortName}"/>
                    </TextBlock>
                </DataTemplate>
            </TabControl.ItemTemplate>
            <TabControl.ContentTemplate>
                <DataTemplate>
                    <WindowsFormsHost Child="{Binding Editor}" />
                </DataTemplate>
            </TabControl.ContentTemplate>
</TabControl>

Проблема в том, что я не могу установить «Дочерний» в WindowsFormsHost, потому что

«Привязка» не может быть установлена ​​для свойства «Дочерний элемент» типа «WindowsFormsHost». «Привязка» может быть установлена ​​только для свойства DependencyProperty объекта DependencyObject.

Как я могу установить дочерний элемент WindowsFormsHost?

РЕДАКТИРОВАТЬ: забыл упомянуть, в конструкторе главного окна у меня есть:

tabControl1.ItemsSource = allScripts;

person Johnny Mopp    schedule 04.06.2012    source источник


Ответы (1)


Измените шаблон контента на

<TabControl.ContentTemplate> 
     <DataTemplate> 
          <ContentControl Content="{Binding Editor}" /> 
     </DataTemplate> 
</TabControl.ContentTemplate> 

и измените свойство Editor вашего кода программной части на

public WindowsFormsHost Editor   
{   
    get { return new WindowsFormsHost(){Child=editor}; }   
}   
person Community    schedule 04.06.2012