我有以下XAML的父(簡化,沒有結束標記):定製控件的內容不能綁定到控制
<Window Name="myWindow" DataContext="{Binding ElementName=myWindow}" >
<DockPanel>
<tb:ToolBar Name="toolbar" DockPanel.Dock="Top">
<tb:ToolBar.Items>
<tb:ToolBarControl Priority="-3">
<tb:ToolBarControl.Content>
<StackPanel Orientation="Horizontal">
<TextBlock>Maps:</TextBlock>
<ComboBox ItemsSource="{Binding Generator.Maps, ElementName=myWindow}">
但ComboBox
的結合將失敗,並
Cannot find source for binding with reference 'ElementName=myWindow'
有關自定義控件的一些事實:
tb:ToolBar
是UserControl
WH ich包含實際ToolBar
與ItemsSource
綁定到Items
財產的tb:ToolBar
(繼承類型IList
)。ToolBar
所述的ToolBarItem
DataTemplate
是從幾個DataTemplate
秒(根據項的類型)選擇的。屬於
tb:ToolBarControl
的DataTemplate中是非常簡單 - 它只是包含ContentPresenter
綁定到tb:ToolBarControl
財產Content
。tb:ToolBarControl
不是技術原因UserControl
,它只是DependencyObject
與object
型物業Content
。
爲什麼不能ComboBox
引用Window
?
感謝您的幫助!
你確定失敗來自ComboBox嗎?說窗口不是myWindow,但在錯誤消息中它說'元素名= myWindow' –
2011-11-23 13:56:11
@Xim這是因爲我已經改變了原來的名字。綁定錯誤指定了它的起源。原始的完整錯誤是「System.Windows.Data錯誤:4:找不到與參考綁定的源'ElementName = view2D'。BindingExpression:Path = Generator.Maps; DataItem = null;目標元素是'ComboBox'(Name =' ');目標屬性是'ItemsSource'(類型'IEnumerable')「。是的,「view2D」是窗口的名稱。 – 2011-11-23 15:12:51