2010-05-07 59 views
2

我有一個用戶控件,允許通過暴露Grid的Children屬性添加項目。任何控制我想補充說明了罰款,但是當我嘗試對添加的項目屬性綁定到主窗口沒有控制發生(例如):WPF:綁定項目添加到UserControl的暴露兒童

<TextBox Name="txtTest" Text="Success!" /> 

<mycontrols:CustomUserControl.ExposedGridChildren> 
    <TextBox Text="{Binding ElementName=txtTest, Path=Text, FallbackValue=fail}"/> 
</mycontrols:CustomUserControl.ExposedGridChildren> 

這個例子總是導致文本框的文本顯示「失敗」。以下是我如何在用戶控制中暴露兒童:

public UIElementCollection ExposedGridChildren 
    { 
     get { return grdContainer.Children; } 
    } 

有什麼想法?這是範圍問題嗎?我知道我不能將因爲範圍錯誤而添加到孩子的元素命名。謝謝,Brian。

回答

0

我顯然是在談論這件事情都是錯的。我需要做的是創建一個無需看管的控件,並將其模板化爲擁有一個(或多個)contentpresenter(s)。

0

這可能會回答你的問題: How do you bind a grid's children to a list?

或者爲WPF博士所說的那樣:(http://drwpf.com/blog/2007/10/15/itemscontrol-a-is-for-abundance/

是面板一個ItemsControl?

號面板 的邏輯兒童UI元素,而一個ItemsControl(其 項目)的邏輯 兒童可以是任何CLR對象。

側欄:那麼什麼是面板?面板的主要功能 是爲其子項提供佈局 支持。雖然 面板確實保持 子元素的集合,它是不是技術上 一個WPF「控制」 ......也就是說,它不會 從Control基類派生和 它不支持 模板的WPF概念。相反,它是一個具有單一用途的單一 元素,即 ,用於大小和位置(又名,測量 並安排)其子女。

+0

itemcontrol似乎功能完全一樣。也許我錯誤地揭露了它?現在是: public ItemCollection ExposedItemsControlItems { get {return grdContainer.Items; } } 我仍然可以添加控件,它們在主窗口中顯示正常,但我仍然無法綁定到usercontrol之外。 在旁註:我沒有綁定一個集合到usercontrol我實際上把它們直接放到xaml中。因爲我將使用這個用戶控件在很多形式上,我需要能夠在每個表單上添加不同的控件。 – Brian 2010-05-11 12:49:56