2010-12-22 5 views
1

ComboBox을 가지고 내 행 (그것의 ItemSource있다) 그리고 난 ViewModelItemSource 목록에 바인딩 할,하지만 난 할 수 없습니다. DataContextViewModel이 아니기 때문에이 문제를 해결할 생각이 있습니까?바인딩 콤보 항목 소스

샘플 :

CilyCollectionStatusListViewModel에 두 개의 목록입니다. 각 도시에는 Status 속성이 있습니다.

<Grid x:Name="LayoutRoot" DataContext="ViewModel"> 
    <sdk:DataGrid Grid.Row="1" 
        AutoGenerateColumns="False" 
        ItemsSource="{Binding CityCollection}"> 
     <Controls:DataGrid.Columns> 
      <Controls:DataGridTemplateColumn Header="Status"> 
       <Controls:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ComboBox ItemsSource="{Binding StatusList}" 
            Margin="2" 
            SelectedItem="{Binding status,Mode=TwoWay}" 
            ItemTemplate="{StaticResource StatusTemplate}" /> 
        </DataTemplate> 
       </Controls:DataGridTemplateColumn.CellTemplate> 
      </Controls:DataGridTemplateColumn> 
     </Controls:DataGrid.Columns> 
    </sdk:DataGrid> 
</Grid> 
+1

샘플 코드/XAML을 여기에 넣으면 문제를 더 잘 이해하는 데 도움이됩니다. – decyclone

+0

@decyclone : 내 코드는 현재 질문과 같은 샘플입니다. –

답변

1

상대 소스가 CilyCollection 항목에 대한 귀하의 DataTemplate에

{Binding DataContext.StatusList, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}} 
+0

Silverlight에서 작동하지 않습니다 – AnthonyWJones

1

액세스 권한을 바인딩하십시오. 따라서 City의 Status 속성에 바인딩 할 수 있습니다. StatusList에 액세스 할 수 없습니다. 바인딩하려면 StatusList는 시도 :

<의 DataTemplate>

< 콤보 상자 ItemsSource = "{바인딩 ElementName을 =이 LayoutRoot, 경로 = DataContext.StatusList}">

...

+0

+1 기본 아이디어가 도착하기 때문입니다. 그러나 경로 Path = DataContext.StatusList합니다. – AnthonyWJones

+0

물론, 감사합니다. –