2012-11-19 6 views
0

일부 데이터 바인딩에는 약간의 도움이 필요합니다.XAML 데이터 바인딩이 업데이트되지 않습니다.

그래서 사용자 지정 개체의 ObservableCollection이 있습니다.

/// <summary> 
    /// Name 
    /// </summary> 
    private string _name; 
    public string Name 
    { 
     get 
     { 
      return _name; 
     } 
     set 
     { 
      if (value != _name) 
      { 
       _name = value; 
       NotifyPropertyChanged("Name"); 
      } 
     } 
    }   

    /// <summary> 
    /// Status 
    /// </summary> 
    private int _status; 
    public int Status 
    { 
     get 
     { 
      return _status; 
     } 
     set 
     { 
      if (value != _status) 
      { 
       _status = value; 
       NotifyPropertyChanged("Status"); 
      } 
     } 
    } 

    /// <summary> 
    /// Visible information 
    /// </summary> 
    private Visibility _visible; 
    public Visibility Visible 
    { 
     get 
     { 
      return _visible; 
     } 
     set 
     { 
      if (value != _visible) 
      { 
       _visible = value; 
       NotifyPropertyChanged("Visible"); 
      } 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 
    private void NotifyPropertyChanged(String propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (null != handler) 
     { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

을 그리고 기본적으로 나는 세 번째가있는 동안 텍스트 이름에 바인더 제본 및 상태가 처음 두 세 개의 TextBlocks 가지고 : 객체의 속성으로 표시됩니다

Visibility = {Binding Visible} 

하지만 때마다 I을 visibility 속성을 토글하려면 Visible 상태에서 Collapsed로 전환 한 다음 다시는 전환 할 수 없습니다. 내 토글은 다음과 같습니다

  ItemViewModel l = ((sender as LongListSelector).SelectedItem) as ItemViewModel; 
      MessageBox.Show(l.Visible.ToString()); 
      if (l.Visible == Visibility.Collapsed) 
       l.Visible = Visibility.Visible; 
      else 
       l.Visible = Visibility.Collapsed; 

참고 : ItemViewModel 즉 수집에 대한 사용자 정의 클래스입니다.

ObservableCollection<ItemViewModel> 

분명히 거친 테스트 일 뿐이지 만 여전히 작동하지 않습니다. 메시지 상자는 항목의 실제 가시성 상태에 관계없이 항상 "표시"로 표시됩니다. 어떻게 얻을 수 있습니까? 시정의 가치는 무엇입니까?

누구나 아이디어가 있다면 그럴 것입니다.

감사합니다.

편집 : 명확성을 위해 Textblocks에 대한 XAML을 추가 :

<TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="20"/> 
<TextBlock Text="{Binding Status}" TextWrapping="Wrap" Margin="12,-6,280,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
<TextBlock x:Name="t1" Text="Test for visibility" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}" Visibility="{Binding Visible}"/> 

이 textblocks는 StackPanel에 둘러 쌓여있다 그래서 단순히 t1.Visible을 변경하는 longlistselector 질문에서 알아 두셔야합니다.

+2

세 번째 입력란에 대해 전체 XAML을 게시 할 수 있습니까? – CodingGorilla

+0

원래 게시물에 추가되어 눈에 띄게 나타납니다 – Travv92

+0

디버그 msgbox는 예상대로 동작합니까? –

답변

1

더 많은 조사가 끝난 후 문제는 다른 코드 분기에 의해 속성이 설정되는 결과를 가져옵니다.

관련 문제