Quantcast
Channel: Extended WPF Toolkit™ Community Edition
Viewing all articles
Browse latest Browse all 4964

New Post: [AvalonDock 2.0] How to use databinding in UserControl which is inside LayoutAnchorable

$
0
0
I tried to use databinding in UserControl (TestControl) which is inside LayoutAnchorable, but I failed. But when I used TextBox instead of TestControl, data passed from FileViewModel to TextBox successfully.

Questions:

When don't set TestControl.DataContext, why databiding is trying to find MyTextCtrl in FileViewModel which actually belongs to TestControl.
 System.Windows.Data Error: 40 : BindingExpression path error: 'MyTextCtrl' property not found on 'object' ''FileViewModel' (HashCode=3989297)'. BindingExpression:Path=MyTextCtrl; DataItem='FileViewModel' (HashCode=3989297); target element is 'TextBox' (Name=''); target property is 'Text' (type 'String')
And when set TestControl.DataContext = this (the TestControl itself), why databinding is trying to find MyTextFile in TestControl which actually belongs to FileViewModel?
System.Windows.Data Error: 40 : BindingExpression path error: 'MyTextFile' property not found on 'object' ''TestControl' (Name='')'. BindingExpression:Path=MyTextFile; DataItem='TestControl' (Name=''); target element is 'TestControl' (Name=''); target property is 'MyTextCtrl' (type 'String')
Code Details:

MyTextCtrl is a string.
TestControl is inside a pane:
<avalonDock:DockingManager.LayoutItemTemplateSelector>
                <local:PanesTemplateSelector>
                    <local:PanesTemplateSelector.FileViewTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <local:TestControl MyTextCtrl="{Binding MyTextFile}" />
                            </StackPanel>
                        </DataTemplate>
                    </local:PanesTemplateSelector.FileViewTemplate>

...
FileViewTemplate uses FileViewModel as model. And it is inside an anchorable pane
<avalonDock:LayoutRoot>
                <avalonDock:LayoutPanel Orientation="Horizontal">
                    <avalonDock:LayoutAnchorablePane Name="ToolsPane" DockHeight="150" DockWidth="230">                        
                    </avalonDock:LayoutAnchorablePane>
                    <avalonDock:LayoutDocumentPane/>
                </avalonDock:LayoutPanel>
            </avalonDock:LayoutRoot>

Viewing all articles
Browse latest Browse all 4964

Trending Articles