2012-06-04 39 views
4

我想將項目列表綁定到TabControl。這些項目看起來像:與WindowsFormsHost綁定

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因爲

A「綁定」無法在類型爲「WindowsFormsHost」的「孩子」屬性設置。 '綁定'只能在DependencyObject的DependencyProperty上設置。

如何設置WindowsFormsHost子?

編輯:忘了提,在主窗口的構造,我有:

tabControl1.ItemsSource = allScripts; 

回答

7

您的內容模板更改爲

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

和隱藏代碼改變你的Editor屬性

public WindowsFormsHost Editor 
{ 
    get { return new WindowsFormsHost(){Child=editor}; } 
} 
+0

謝謝。就是這樣。 –