2013-10-04 68 views
0

我想绑定的SelectedItem,这是另一个列表框里面里面,但我从输出这个绑定错误:绑定的SelectedItem另一个列表框

System.Windows.Data Error: BindingExpression path error: 'Time' property not found on '[23, System.Collections.Generic.List`1[MarsrutaiAPI.ArrivalTime]]' 'System.Collections.Generic.KeyValuePair`2[System.Int32,System.Collections.Generic.List`1[MarsrutaiAPI.ArrivalTime]]' (HashCode=1268928309). BindingExpression: Path='Time' DataItem='[23, System.Collections.Generic.List`1[MarsrutaiAPI.ArrivalTime]]' (HashCode=1268928309); target element is 'System.Windows.Controls.ListBox' (Name='innerList'); target property is 'SelectedItem' (type 'System.Object').. 

嵌套的列表框被宣布为:

<ListBox ItemsSource="{Binding TimeTable}" Visibility="{Binding IsLoading, Converter={StaticResource BooleanToVisibilityNegativeConverter}}"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="70"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="Auto"/> 
          <RowDefinition Height="Auto"/> 
         </Grid.RowDefinitions> 
         <TextBlock Text="{Binding Key}" Style="{StaticResource NormalText}" FontSize="42" Margin="0,0,10,0" HorizontalAlignment="Center" /> 
         <ListBox Grid.Column="1" Name="innerList" ItemsSource="{Binding Value}" SelectedItem="{Binding Time,Mode=TwoWay}" ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
          <ListBoxItem Margin="0,0,5,5"/> 
          <ListBox.ItemsPanel> 
           <ItemsPanelTemplate> 
            <toolkit:WrapPanel Orientation="Horizontal"/> 
           </ItemsPanelTemplate> 
          </ListBox.ItemsPanel> 
          <ListBox.ItemTemplate> 
           <DataTemplate> 
            <Border BorderBrush="{StaticResource tekstas}" BorderThickness="1" CornerRadius="5" Margin="5" Background="{Binding IsAccessible,Converter={StaticResource IsAccessibleToColor}}"> 
             <TextBlock Style="{StaticResource NormalText}" Text="{Binding ExpectedTime, StringFormat=\{0:mm\}}" Margin="10" HorizontalAlignment="Center"/> 
            </Border> 
           </DataTemplate> 
          </ListBox.ItemTemplate> 
         </ListBox> 
         <Border Grid.Row="1" Grid.ColumnSpan="2" Margin="10"/> 
        </Grid> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

时间表属性:public Dictionary<int, List<ArrivalTime>> TimeTable

时间属性的ArrivalTime

对象

整个绑定工作,完美,除了的SelectedItem,即使我有必要的财产在我的VM

private ArrivalTime _time; 
    public ArrivalTime Time 
    { 
     get { return _time; } 
     set 
     { 
      _time = value; 
      RaisePropertyChanged("Time"); 
     } 
    } 

感谢您的帮助:)

回答

1

试试这个:

SelectedItem="{Binding Path=Time, RelativeSource={RelativeSource AncestorType={x:Type Grid}}}" 

并且如果RelativeSource不可能,那么命名您的父容器网格,如下所示

<Grid Name="gridFoo" Tag={Binding} /> 

而且

<ListBox Grid.Column="1" Name="innerList" ItemsSource="{Binding Value}" SelectedItem="{Binding Tag.Time, ElementName=gridFoo}" ScrollViewer.VerticalScrollBarVisibility="Disabled"> 
+0

可悲的是Windows phone的,所以我认为AncestorType不支持 – Domas

+1

,也<列表框Grid.Column = “1” NAME = “innerList” 的ItemsSource = “{绑定值}” 的SelectedItem =” {绑定DataContext.Time,ElementName = gridFoo}“ScrollViewer.VerticalScrollBarVisibility =”已禁用“> –

+0

谢谢!那一个工作,将永远不会弄明白我自己:) – Domas

相关问题