2012-11-19 89 views
0

只需要一些數據綁定的幫助。XAML databinding not updating

所以我有一個自定義對象的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} 

但每當我想要切換可見性屬性,我只能將其從可見狀態切換到摺疊狀態,然後不再。我的切換是這樣的:

  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> 

顯然這只是一個粗略的測試,但仍然不起作用。無論項目的實際可見性狀態如何,消息框始終顯示「可見」。我怎樣才能得到real可見性的值?

如果有人有任何想法,那就太好了。

謝謝。

編輯:添加XAML爲的TextBlocks爲清楚:

<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內包裹和longlistselector如此簡單地改變t1.Visible是出了問題。

+2

你可以發佈第三個文本框的整個XAML嗎? – CodingGorilla

+0

已添加到原始文章,因此更引人注目 – Travv92

+0

您的調試msgbox的行爲是否像您所期望的那樣? –

回答

1

經過更多的調查後,問題的結果是該屬性被另一個代碼分支設置。