2016-08-15 2 views
1

im Versuch, eine beobachtbare Sammlung (Keyframes) in den Elementen meiner Listbox meiner Datatemplate der Itemssource (beobachtbaren Sammlung)XAML Bindung Itemssource innerhalb Datatemplate

<ListBox x:Name="lbTimeLines" 
DataContext="{Binding MainViewport,Source={StaticResource Locator}}" 
ItemsSource="{Binding AnimateableObjects}" SelectedIndex="{Binding selectedIndex}"> 
     <ListBox.ItemTemplate > 
         <DataTemplate DataType="{x:Type obj:ObjectSettings }"> 
          <cc:TimeLine x:Name="TL" Height="25" 
             ItemsSource="{Binding Path=KeyFrames}"<!-- here is the problem --> 
             CurrentFrame="{Binding LayerView.CurrentFrame,Source={StaticResource Locator},Mode=TwoWay}" 
             Width="{Binding LayerView.Globalwidth,Source={StaticResource Locator}}"> 
          </cc:TimeLine> 
         </DataTemplate> 
     </ListBox.ItemTemplate> 

jedoch befindet sich zu binden, scheint dies zu folgenden Ergebnissen führen der Fehler

System.Windows.Data Error: 40 : BindingExpression path error: 'KeyFrames' property not found on 'object' ''TimeLineViewModel' (HashCode=2312607)'. BindingExpression:Path=KeyFrames; DataItem='TimeLineViewModel' (HashCode=2312607); target element is 'TimeLine' (Name='MainControl'); target property is 'ItemsSource' (type 'ObservableCollection`1')

nicht sicher, warum, aber er scheint für KeyFrames in der Zeitleiste des Ansichtsmodell anstelle der Listbox Elemente zu suchen

Anmerkung: Ich bin mit ähnlich auf einem anderen listbox Bindung, dies scheint aber gut zu funktionieren

<ListBox x:Name="lbLayers" 
DataContext="{Binding MainViewport,Source={StaticResource Locator}}" 
ItemsSource="{Binding AnimateableObjects}" SelectedIndex="{Binding selectedIndex}"> 
<ListBox.ItemTemplate> 
    <DataTemplate DataType="{x:Type obj:ObjectSettings }"> 
     <StackPanel > 
      <Label Content="{Binding Name}" Height="25" Width="180"></Label> 
     </StackPanel> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

+0

Nichts falsch es nicht reproduzieren. Ihre Diagnose ist möglicherweise falsch. Ich würde ein Tool wie Snoop oder 2015 UI Inspektoren verwenden, um die Ansichtsmodelle und Eigenschaftswerte der Steuerelemente in diesem Teil der Struktur zu untersuchen. – Will

+0

danke für die Antwort, ich habe meine Frage aktualisiert, das Problem scheint verschwunden zu sein:/nicht sicher, was es an erster Stelle verursacht – Drumstig

+0

Ich würde Ihnen dringend empfehlen, Ihre Bearbeitung zu entfernen und es als Antwort unten hinzuzufügen. Nach der erforderlichen Wartezeit können Sie sie als Lösung markieren. Das wird normalerweise in dieser Situation gemacht. – Will

Antwort

0

, während ich auf eine Antwort warte ich meine XAML ändern, so dass der Keyframe würde gebunden werden, um eine versteckte Items und Itemssource meiner Timeline wurde an die Items gebunden Itemssource

das mir erlaubt, weiter zu arbeiten

<ListBox x:Name="lbTimeLines" DataContext="{Binding MainViewport,Source={StaticResource Locator}}" ItemsSource="{Binding AnimateableObjects}" SelectedIndex="{Binding selectedIndex}"> 
<ListBox.ItemTemplate > 
    <DataTemplate DataType="{x:Type obj:ObjectSettings }" > 
     <StackPanel Orientation="Horizontal"> 
      <ItemsControl x:Name="Testcontainer" ItemsSource="{Binding KeyFrames, Mode=TwoWay}" Visibility="Hidden" Width="0"> 
      </ItemsControl> 
      <cc:TimeLine Height="25" 
        ItemsSource="{Binding ElementName=Testcontainer, Path=ItemsSource,Mode=TwoWay}" 
        CurrentFrame="{Binding LayerView.CurrentFrame,Source={StaticResource Locator},Mode=TwoWay}" 
        Width="{Binding LayerView.Globalwidth,Source={StaticResource Locator}}"> 
      </cc:TimeLine> 
     </StackPanel> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

nach der ersten Antwort, die ich meinen Code wieder auf den ursprünglichen geändert, aber ich konnte den Fehler

Verwandte Themen