2010-07-27 5 views
0

나는 다음과 같은 XML 파일이 있습니다Databinded 목록 상자는 첫 번째 항목을 결합

<CUEShow> 
    <Showtitel>example show</Showtitel> 
    <Authortitel>Wouter</Authortitel> 





    <Singlecues> 
<Singlecue><nr>1</nr><Name>Onweer</Name></Singlecue> 
<Singlecue><nr>2</nr><Name>Regen</Name></Singlecue> 
<Singlecue><nr>3</nr><Name>Donder</Name></Singlecue> 
<Singlecue><nr>4</nr><Name>Onweer</Name></Singlecue> 
<Singlecue><nr>5</nr><Name>Regen</Name></Singlecue> 
<Singlecue><nr>6</nr><Name>Donder</Name></Singlecue> 
<Singlecue><nr>7</nr><Name>Onweer</Name></Singlecue> 
<Singlecue><nr>8</nr><Name>Regen</Name></Singlecue> 
<Singlecue><nr>9</nr><Name>Donder</Name></Singlecue> 
    </Singlecues> 

    <Maincues> 
<Maincue><nr>1</nr><Name>Onweer</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>2</nr><Name>Regen</Name><Duration>Lang</Duration><Type>Follow</Type></Maincue> 
<Maincue><nr>3</nr><Name>Donder</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>4</nr><Name>Onweer</Name><Duration>Lang</Duration><Type>Follow Direct</Type></Maincue> 
<Maincue><nr>5</nr><Name>Regen</Name><Duration>Lang</Duration><Type>Follow</Type></Maincue> 
<Maincue><nr>6</nr><Name>Donder</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>7</nr><Name>Onweer</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>8</nr><Name>Regen</Name><Duration>Lang</Duration><Type>Follow Direct</Type></Maincue> 
<Maincue><nr>9</nr><Name>Donder</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>10</nr><Name>Onweer</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>11</nr><Name>Regen</Name><Duration>Lang</Duration><Type>Follow</Type></Maincue> 
<Maincue><nr>12</nr><Name>Donder</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>13</nr><Name>Onweer</Name><Duration>Lang</Duration><Type>Follow Direct</Type></Maincue> 
<Maincue><nr>14</nr><Name>Regen</Name><Duration>Lang</Duration><Type>Follow</Type></Maincue> 
<Maincue><nr>15</nr><Name>Donder</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>16</nr><Name>Onweer</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
<Maincue><nr>17</nr><Name>Regen</Name><Duration>Lang</Duration><Type>Follow Direct</Type></Maincue> 
<Maincue><nr>18</nr><Name>Donder</Name><Duration>Lang</Duration><Type>GO</Type></Maincue> 
    </Maincues> 

    <Mastervolume Value="75" /> 


</CUEShow> 

내가 데이터 소스로 파일을 바인더 제본 한을. 이제 모든 마인 큐 노드를 표시하고자하는 목록 상자가 생겼습니다. 나는 contentsource에 가서 Maincue 노드를 선택했다. 그런 다음 이름을 텍스트 상자에 바인딩하는 itemdatatemplate을 만들었습니다. nr은 버튼 텍스트이지만 목록에는 첫 번째 메인 큐만 표시됩니다. 아래를 참조

alt text http://tegen-licht.nl/Screenie.png

내 항목의 DataTemplate은 다음과 같다 :

는, 바인딩 경로가 올바른 것은 무엇 보인다 내가 잘못하고있는 중이 야
<DataTemplate x:Key="Maincuestemplate"> 
     <Grid Height="30" Width="958.737" DataContext="{Binding XPath=/CUEShow/Maincues}" Margin="0"> 
      <Button Content="{Binding XPath=/CUEShow/Maincues/Maincue/nr}" Width="30" Style="{DynamicResource CUEStyle_Button_Inhoudknopje}" Template="{DynamicResource CUEStyle_Knopje_Cuelijsten}" Height="Auto" HorizontalAlignment="Left" Background="#FFABCCED" DataContext="{Binding XPath=Maincue/nr}"/> 
      <TextBlock Margin="58,0,0,0" Width="289.07" VerticalAlignment="Center" FontSize="16" Foreground="Gray" Text="{Binding XPath=/CUEShow/Maincues/Maincue/Name}" HorizontalAlignment="Left"/> 
      <Button Width="30" Style="{DynamicResource CUEStyle_Button_Groot}" Template="{DynamicResource CUEStyle_Rondknopje}" Height="Auto" HorizontalAlignment="Right" Margin="0,0.55,74.737,-0.55" Content="u" FontFamily="Wingdings 3" Foreground="Gray" Opacity="0.4"/> 
      <Button Width="30" Style="{DynamicResource CUEStyle_Button_Groot}" Template="{DynamicResource CUEStyle_Rondknopje}" Height="Auto" HorizontalAlignment="Right" Margin="0,0.55,37.071,-0.55" Content="¢" FontFamily="Wingdings 2" Foreground="Gray" Opacity="0.4"/> 
      <Button Width="30" Style="{DynamicResource CUEStyle_Button_Groot}" Template="{DynamicResource CUEStyle_Rondknopje}" Height="Auto" HorizontalAlignment="Right" Margin="0" Content="Q" FontFamily="Wingdings 3" Foreground="Gray" FontWeight="Bold" FontSize="18.667" Opacity="0.4"/> 
      <ProgressBar Style="{DynamicResource CUEStyle_Progressbar}" Panel.ZIndex="-1" Margin="361.93,10.833,401.737,6.527" Value="35" Template="{DynamicResource CUE_Progress}" RenderTransformOrigin="0.5,0.5"> 
       <ProgressBar.RenderTransform> 
        <TransformGroup> 
         <ScaleTransform ScaleY="-1"/> 
         <SkewTransform/> 
         <RotateTransform/> 
         <TranslateTransform/> 
        </TransformGroup> 
       </ProgressBar.RenderTransform> 
      </ProgressBar> 
      <TextBlock Margin="421,4.421,456.667,4.298" Width="Auto" VerticalAlignment="Stretch" FontSize="16" Foreground="Gray" Text="{Binding XPath=/CUEShow/Maincues/Maincue/Duration}" HorizontalAlignment="Stretch" d:LayoutOverrides="Height"/> 
      <TextBlock Margin="0,0.55,166.667,0.718" Width="81.07" VerticalAlignment="Stretch" FontSize="21.333" Foreground="Gray" Text="{Binding XPath=/CUEShow/Maincues/Maincue/Type}" HorizontalAlignment="Right"/> 
     </Grid> 
    </DataTemplate> 

...

답변

1

을 시작할 때 슬래시가있는 XPath 표현식은 문서의 루트에 상대적으로 작동합니다. 따라서 문서의 현재 노드에 관계없이 {Binding XPath=/CUEShow/Maincues/Maincue/nr}은 문서의 각 노드에 대해 nr으로 평가됩니다. 단일 노드가 필요하기 때문에 프레임 워크는 첫 번째 노드 만 가져오고 템플릿의 모든 인스턴스는 첫 번째 노드의 내용을 사용합니다.

이 DataTemplate이 ItemsControl에 있고 데이터 컨텍스트가 Maincue 노드라고 가정합니다. 이 경우 ItemsControl에서 제공하는 DataContext를 사용하고 각 XPath 표현식에서 /CUEShow/Maincues/Maincue/을 제거하여 현재 노드에서 시작하도록 Grid 및 DataContext 특성을 Button에서 제거하십시오. 예 : <Button Content="{Binding XPath=nr}".

관련 문제