Binding does not work without specifying an ancestor

Linking to the list below works if I specify an ancestor, but not otherwise. Why does this not work if I do not specify an ancestor?

<wpftoolkit:DataGrid Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2"
                         Margin="5"
                         BorderBrush="#A6A6A6"
                         BorderThickness="1"
                         ItemsSource="{Binding DebitListing}"
                         AutoGenerateColumns="False"
                         SelectionMode="Single">
        <wpftoolkit:DataGrid.Columns>
            <wpftoolkit:DataGridComboBoxColumn
                Header="{Resx ResxName=MyBooks.Properties.Strings, Key=PartyListing_Party_Label}"
                SelectedItemBinding="{Binding Party, ValidatesOnDataErrors=True}"
                DisplayMemberPath="Name">

                <wpftoolkit:DataGridComboBoxColumn.ElementStyle>
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="ItemsSource" Value="{Binding Path=DataContext.CreditedAccounts, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
                    </Style>
                </wpftoolkit:DataGridComboBoxColumn.ElementStyle>
                <wpftoolkit:DataGridComboBoxColumn.EditingElementStyle>
                    <Style TargetType="{x:Type ComboBox}">
                        <Setter Property="ItemsSource" Value="{Binding Path=DataContext.CreditedAccounts, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" />
                    </Style>
                </wpftoolkit:DataGridComboBoxColumn.EditingElementStyle>

            </wpftoolkit:DataGridComboBoxColumn>

            <wpftoolkit:DataGridTextColumn
                Header="{Resx ResxName=MyBooks.Properties.Strings, Key=PartyListing_Amount_Label}"
                Binding="{Binding Amount, ValidatesOnDataErrors=True}"/>
        </wpftoolkit:DataGrid.Columns>
    </wpftoolkit:DataGrid>
+3
source share
2 answers

, , DataContext, , wpftoolkit datacontext . , ListView/DataGrid - DataContext , . , - DataContext, RelativeSource Ancestor, .

, , XAML , DataContext , DependencyProperty, - .

, , ( , DataContext), x:Name='ControlRoot'. , datacontext, :

Value="{Binding ElementName=ControlRoot, Path=DataContext.CreditedAccounts}"
+1

, , , , ( ItemsSource DataGrid), . - . , , .

0

All Articles