2011-08-24 2 views
1

Telerik RadGridView를 List<MyObject> myList = new List<MyObject>에 바인딩합니다. 그러나 myList.Count == 0 (목록이 비어 있습니다.)) 사용자에게 다른 컨트롤을 보여주고 싶습니다.Silverlight : 목록 수를 기반으로 컨트롤 선택

일부 가시성 변환기를 사용할 수는 있지만 XAML에서는이를 구현하는 것이 더 좋습니다. 당신이 모든 XAML에서 당신의 myList.Count에 VisibilityConverters를 사용하여 바인딩 할 수 있습니다를 ObservableCollection<MyObject>로 전환하는 경우

답변

1

저는 가치 변환기가 유일한 선택이라고 생각합니다. 그러나 제대로 구조화하면 가치 변환기가 훌륭하다는 것을 알았습니다. 여기

이 좋은 도구의 몇 가지 있습니다 :

<Grid> 
     <telerik:RadGridView ItemsSource="{Binding myList}"> 
      <telerik:RadGridView.Visibility> 
       <Binding Path="myList"> 
        <Binding.Converter> 
         <converters:SequentialValueConverter> 
          <converters:IsEmptyConverter /> 
          <converters:BooleanToVisibilityConverter TrueValue="Collapsed" FalseValue="Visible" /> 
         </converters:SequentialValueConverter> 
        </Binding.Converter> 
       </Binding> 
      </telerik:RadGridView.Visibility> 
     </telerik:RadGridView> 
     <YourControl> 
      <YourControl.Visibility> 
       <Binding Path="myList"> 
        <Binding.Converter> 
         <converters:SequentialValueConverter> 
          <converters:IsEmptyConverter /> 
          <converters:BooleanToVisibilityConverter TrueValue="Visible" FalseValue="Collapsed" /> 
         </converters:SequentialValueConverter> 
        </Binding.Converter> 
       </Binding> 
      </YourControl.Visibility> 
     </YourControl> 
    </Grid> 
:

, 나는 이런 식으로 뭔가 함께 갈 것

제이슨이 말했듯이 myList는 ObservableCol이어야합니다. lei 그래서 GUI가 변경 될 때 알림을받습니다.

희망 하시겠습니까?

+0

사실, 소스가 myList 인 CollectionViewSource를 사용하고 있습니다. 내 응용 프로그램 컨텍스트에서 잘 작동합니다. 그래서 나는 변환기를 구현할 것입니다. –

0

감사드립니다. 코드 숨김으로 ItemsSource를 설정했기 때문에 문제가 발생하는 경우 자원을 갖고 있거나 더 많은 MVVM으로 전환 할 수 있습니다.

+0

MVVM을 사용 중이며 코드가 없습니다. myList가 비어있을 때 컨트롤을 전환하여 사용자와 더 나은 상호 작용을 원합니다. –