2012-10-02 3 views
0

컬렉션이 비어있는 경우에만 TextBlock을 표시하고 싶습니다. 이미 컬렉션에 데이터 바인딩 된 ListView 있어요 및 그 간단합니다. ListView가 비어 있으면 다른 것을 표시하기 만하면됩니다.컬렉션의 공백을 기반으로 데이터를 바인딩하는 방법은 무엇입니까?

나는 IValueConverter을 써서 컬렉션이나 카운트 또는 필요한 것을 취하고 Visibility을 적절하게 반환합니다. XAML은 다음과 같습니다

<TextBlock Visibility="{Binding Count, ElementName=ContactsList, Converter={StaticResource visibilityWhenEmpty}}" 
      Text="No contacts yet. Add one using the AppBar below." /> 

말썽 그냥 콜렉션 자체를 바인딩 한 번만 내 값 변환기를 호출하는 것입니다 컬렉션 변경 내용 (좀 의미가 있습니다) 때 다시는 비어, 때. 위에서 볼 수 있듯이 컬렉션의 Count 속성에 바인딩하려고하면 값 변환기가 전혀 호출되지 않습니다.

아이디어가 있으십니까?

답변

0

Count에 notifyPropertyChanged를 사용하거나 BindableBase를 사용하여 구현할 수 있습니다.

+1

나는 내가 그렇게 할 것입니다 방법을 모르는''ObservableCollection에 구현하지 않는 한보고 답변 – Cybermaxs

+0

에 더 많은 콘텐츠를 추가하시기 바랍니다. 게다가, 내가 커스텀 콜렉션 타입에서 구현한다고 할지라도, Count에 대한 바인딩은 전혀 작동하지 않으므로 notifychange가 발생하지 않는다는 것이 문제이다. –

1

나는 동일한 문제에 직면 해있다. 나는 까다로운 해결책을 적용했다. 그것은 당신을 위해 또한 작동 할지도 모르다. 임시 콤보 상자를 가져 와서 컬렉션을 바인딩합니다.

<ComboBox x:Name="TempComboBox" 
         ItemsSource="{Binding DataContext.ContactsList, 
            RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}" > 
       <ComboBox.Template> 
        <ControlTemplate> 
         <!--Add file button..--> 
         <TextBlock Content="Your text..." 
           > 
          <TextBlock.Visibility> 
           <Binding Path="Items.Count" 
             RelativeSource="{RelativeSource Mode=FindAncestor,AncestorType=ComboBox}" 
           Converter="{StaticResource visibilityWhenEmpty}"> 
           </Binding> 
          </TextBlock.Visibility> 
         </TextBlock> 
        </ControlTemplate> 
       </ComboBox.Template> 
      </ComboBox> 
관련 문제