【问题标题】:How to get control parent DataContext for element to element databinding?如何获取元素到元素数据绑定的控制父 DataContext?
【发布时间】:2013-09-23 00:53:14
【问题描述】:

假设我有一个用户控制哪个数据上下文绑定到虚拟机。此 VM 具有列表 MyList 的属性。

在这个用户控件中我有一个 ComboBox,我想设置以下类型的 xaml

   <Grid x:Name="LayoutRoot" Background="White">
            <StackPanel HorizontalAlignment="Stretch">
                <sdk:DataGrid ItemsSource="{Binding YourList}"  IsReadOnly="True" AutoGenerateColumns="False" >
                    <sdk:DataGrid.Columns>                      
                        <sdk:DataGridTextColumn  Header="Name"   Binding="{Binding Name}" />
                        <!-- ...... -->
                        <sdk:DataGridTemplateColumn  Header="User" >
                            <sdk:DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox ItemsSource="{Binding ElementName=LayoutRoot, Path=DataContext.MyList}" DisplayMemberPath="Value" SelectedValuePath="Key" SelectedValue="{Binding UserID}" ></ComboBox>
                                </DataTemplate>
                            </sdk:DataGridTemplateColumn.CellTemplate>
                        </sdk:DataGridTemplateColumn>

                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>
            </StackPanel>
    </Grid>

但它不起作用。

如何解决这个问题?

【问题讨论】:

  • 你为什么要在这里做元素到元素的绑定?您不是只是想将此 ComboBox 的源绑定到 ViewModel 上的 MyList 吗?如果是这样,您应该可以这样做: ItemsSource="{Binding MyList}" 也许我不明白您所说的“父级”是什么意思,您能显示更多代码吗?

标签: silverlight-4.0


【解决方案1】:

这对我有用。这是 DataGrid 中 ComboBox 的 ItemSource:

      ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=sdk:DataGrid}, 
Path=DataContext.Teams}"> 

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 2013-08-28
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-19
      相关资源
      最近更新 更多