Silverlight WCF数据绑定相关表

Silverlight WCF数据绑定相关表,silverlight,silverlight-4.0,silverlight-5.0,Silverlight,Silverlight 4.0,Silverlight 5.0,我有一张带外键的桌子。我想将数据显示为相关表的描述,而不是Id。从实体服务中,我在数据模型上做了.Include语句,以便返回。以下是我尝试过的,电台显示在手机中,但组合框中没有显示: <sdk:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False" Width="Auto" Header="Station"> <sdk:DataGridTempl

我有一张带外键的桌子。我想将数据显示为相关表的描述,而不是Id。从实体服务中,我在数据模型上做了
.Include
语句,以便返回。以下是我尝试过的,电台显示在手机中,但组合框中没有显示:

<sdk:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False" Width="Auto" Header="Station">
      <sdk:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
          <TextBlock Text="{Binding Station.Description}" />
        </DataTemplate>
      </sdk:DataGridTemplateColumn.CellTemplate>
      <sdk:DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
          <ComboBox ItemsSource="{Binding Station}" />
        </DataTemplate>
      </sdk:DataGridTemplateColumn.CellEditingTemplate>
    </sdk:DataGridTemplateColumn>

 <OperationContract()>
  Public Function LoadPersonnel(clientId As Integer) As List(Of Personnel)
    Dim result As List(Of Personnel)
    Try
      result = db.Personnels.Include("Station").Where(Function(o) o.ClientId = clientId).ToList
    Catch
      result = Nothing
    End Try
    Return result
  End Function

公共函数loadPerson(clientId为整数)作为列表(人员)
Dim结果作为列表(人员)
尝试
结果=数据库人员。包括(“站点”)。其中(功能(o)o.ClientId=ClientId)。ToList
抓住
结果=无
结束尝试
返回结果
端函数
还尝试:

<ComboBox ItemsSource="{Binding}" DisplayMemberPath="{Binding Station.Description}" SelectedItem="{Binding Station.Description}" SelectedValue="{Binding Station.StationId}" />

像这样做

  <sdk:DataGrid AutoGenerateColumns="False" Height="100" HorizontalAlignment="Left" Margin="107,90,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="251" >
            <sdk:DataGrid.Columns>
            <sdk:DataGridTemplateColumn CanUserReorder="False" CanUserResize="False" CanUserSort="False" Width="Auto" Header="Station">
                <sdk:DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Station.Description}" />
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellTemplate>
                <sdk:DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding Station}" DropDownOpened="ComboBox_DropDownOpened" />
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellEditingTemplate>
            </sdk:DataGridTemplateColumn>
            </sdk:DataGrid.Columns>
        </sdk:DataGrid>

由于Station不存在,除了作为另一个数据源上的背载数据,我制作了一个IEnumerable(Of Station)并从服务中填充它。现在他们充满了选择!我现在需要获取所选的值并将其应用于原始对象,然后通过服务将其保存回db。我会玩的,看看我能想出什么。我还需要弄清楚如何将selectedItem设置为正确的值。如果您对此有什么见解,我很想听听,否则我会一直插上…以获取所选值,var x=(您的itemssource对象)combobox.SelectedItem;你推荐哪项活动?我一直在关注这些事件,它们与Winforms和ASPX数据网格(或类似)非常不同。CellEditEnding看起来很有希望。我通常会在DataBound事件中这样做。BeginningEdit非常适合为我获取行数据项。我只需要从这里获取组合框并在这里设置selectedItem。已尝试:Dim cbStation As ComboBox=TryCast(dgStaff.Columns(2).GetCellContent(e.Row),ComboBox)-不起作用。我需要为它迭代可视化树吗?
 private void ComboBox_DropDownOpened(object sender, EventArgs e)
        {
            var combo = (ComboBox)sender;
            combo.ItemsSource = Station;
            combo.DisplayMemberPath = "Description";
        }