2010-05-14 2 views
2

관찰 가능한 오디오 모음 (사용자 정의 클래스)에 바인딩 된 목록 상자가 있습니다. Audio 클래스에는 DisplayText (문자열)라는 속성과 TarpIds (Observable Collection of Integer)라는 속성이 있습니다. 사용자가 표시된 각 목록 항목의 콤보 상자에서 TarpID를 변경하고 선택 변경 사항을 잡을 수있게해야합니다.DataTemplate의 ComboBox에 어떻게 바인딩합니까?

Audio 개체의 DisplayText 속성에 스타일을 지정하고 ComboBox를 추가하여이 오디오에 사용할 수있는 TarpID를 표시하는 DataTemplate을 만들었습니다. (이들은 각 오디오에 대해 동적이며 고유합니다). DisplayText는 훌륭하게 작동하지만 ComboBox에 표시 할 TarpID를 가져올 수 없습니다.

여기까지 제가 도움이되어 주셔서 감사합니다. 참고 : ListUploadAudio를 Observable Audio Collection에 바인딩하는 런타임에 ItemSource를 설정합니다.

<Border BorderBrush="Red" Background="WhiteSmoke" CornerRadius="8"> 
       <Border.Resources> 
        <DataTemplate x:Key="UploadLayout" DataType="Audio"> 
         <StackPanel Orientation="Vertical"> 
          <TextBlock Text="{Binding Path=DisplayText}" 
         FontWeight="Bold" Foreground="Blue"> 
          </TextBlock>         
           <ComboBox x:Name="ListBoxTarpIDs" 
             ItemsSource="{Binding Path=TarpIds}">           
           </ComboBox>                    
          </StackPanel> 
        </DataTemplate> 

       </Border.Resources> 
        <ListBox x:Name="ListUploadAudio" BorderBrush="Transparent" 
         Background="Transparent" Width="230" Margin="10" 
         Height="200" IsSynchronizedWithCurrentItem="True" SelectionMode="Multiple" 
         ItemTemplate="{DynamicResource UploadLayout}"> 
       </ListBox> 
      </Border> 
+2

출력에 바인딩 예외가 있습니까? – luke

+0

다음은 Binding Exceptions에 대한 것입니다. System.Windows.Data 오류 : 39 : BindingExpression 경로 오류 : 'TarpIds'속성이 '개체'에서 발견되지 않았습니다. ''오디오 '(HashCode = 2056998)'. BindingExpression : Path = TarpIds; DataItem = '오디오'(HashCode = 2056998); 대상 요소는 'ComboBox'입니다 (Name = 'ListBoxTarpIDs'). 대상 속성이 'ItemsSource'(유형 'IEnumerable') – user38349

+0

오디오 유형에 "TarpIds"라는 공개 속성이 있습니까? – lesscode

답변

2

귀하의 콤보 상자 ItemsSource뿐만 아니라 SelectedValue을 결합 할 필요가있다.

ComboBox가 해당 항목을 바인딩하지 않는 한 코드가 올바르게 보입니다. 나는 다음 중 하나를 의심 것 :

  • ListUploadAudio.ItemsSource이 예상 값으로 설정하지 (TarpIDs 대 예를 들어 TarpIds)
  • 잘못 정의 된 설정 (예를 들면없는 게터)

    • 맞춤법 오류를

    이것이 작동하지 않으면 코드, 특히 TarpIds 속성의 정의와 ListUploadAudio.ItemsSource를 설정 한 장소를 게시하는 것이 좋습니다.

    de note : 네임 스페이스를 사용하지 않는 한 바인딩에 Path =가 필요하지 않습니다.

  • +0

    모자 문제였습니다. 감사합니다. – user38349

    관련 문제