使用ElementName

时间:2019-07-17 08:44:11

标签: wpf

我尝试使用Binding中的ElementName属性更新RadComboBox的ItemSource,但是当我使用RelativeSource时,它按预期工作。

有什么区别。任何人都可以告诉我。

 <telerik:RadGridView   Name="DesiredCapabilitiesGrid" RowIndicatorVisibility="Collapsed" AllowDrop="False" CanUserDeleteRows="True ShowGroupPanel="False" Height="Auto" Width="Auto"ItemsSource="{Binding DesiredCapabilities,Mode=TwoWay}" 
                                           GroupRenderMode="Flat" NewRowPosition="Bottom" Loaded="DesiredCapabilitiesGrid_Loaded">                            
                        <telerik:RadGridView.Columns>
                            <telerik:GridViewDataColumn Header="Property Names" Width="2*" IsSortable="True" DataMemberBinding="{Binding DesiredCapabilityName}">
                                <telerik:GridViewDataColumn.CellEditTemplate>
                                    <DataTemplate>
                                        <telerik:RadComboBox ItemsSource="{Binding Path=DataContext.ConsiderDesiredCapabilites,ElementName="DesiredCapabilitiesGrid"}" IsEditable="True"></telerik:RadComboBox>
                                    </DataTemplate>                                        
                                </telerik:GridViewDataColumn.CellEditTemplate>

                        </telerik:RadGridView.Columns>
                    </telerik:RadGridView>

1 个答案:

答案 0 :(得分:0)

DesiredCapabilitiesGrid中与RadComboBox相同的namescope中没有名为CellEditTemplate的元素。这就是绑定失败的原因。

RadComboBox已添加到视觉树,但具有视觉祖先。这就是设置RelativeSource工作的原因。请参阅链接以获取有关名称范围的更多信息。