2012-04-02 43 views
1

我有下面的XAML「畫布」結合改變UI ......我想改變其知名度取決於屬性更改。PropertyChanged事件不是使用轉換器

XAML:

<d1:BooleanToVisibilityConverter x:Key="BoolToVis" /> 

Visibility="{Binding Path=IsVisible, Converter={StaticResource BoolToVis}, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" 

我在視圖模型

private bool _isVisible; 
    public bool IsVisible 
    { 
     get { return _isVisible; } 
     set 
     { 
      _isVisible = value; 
      RaisePropertyChanged("IsVisible"); 
     } 
    } 

有此可見性屬性這是我的轉換代碼:

class BooleanToVisibilityConverter : IValueConverter 
{ 
    public BooleanToVisibilityConverter() { } 
    #endregion 

    #region Properties 
    public bool Collapse { get; set; } 
    #endregion 

    #region IValueConverter Members 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     bool bValue = (bool)value; 
     if (bValue) 
     { 
      return Visibility.Visible; 
     } 
     else 
     { 
      return Visibility.Collapsed; 
      //if (Collapse) 
      // return Visibility.Collapsed; 
      //else 
      // return Visibility.Hidden; 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     //Visibility visibility = (Visibility)value; 

     //if (visibility == Visibility.Visible) 
     // return true; 
     //else 
     // return false; 
     return value; 
    } 
    #endregion 
} 

在調試我發現我的二傳手被更改屬性價值,但它不會在我的轉換器上達到斷點。在加載窗口時,轉換器只會在最初被擊中。之後,即使屬性發生變化,它也不會被觸發。

+1

是屬性更改正確?也就是說,它是通過財產設定的,而不是直接針對現場?你沒有向我們顯示該代碼。 – 2012-04-02 19:12:54

+0

我使用Prism PROPERT改變的事件, 命名空間Microsoft.Practices.Prism.ViewModel { [序列化] 公共抽象類NotificationObject:INotifyPropertyChanged的 { 保護NotificationObject(); 公共事件PropertyChangedEventHandler的PropertyChanged; 保護無效RaisePropertyChanged (表達式> propertyExpression); protected void RaisePropertyChanged(params string [] propertyNames); 保護虛擬無效RaisePropertyChanged(字符串propertyName); } – rajcool111 2012-04-02 19:35:57

+0

謝謝,但這不是我問的。我問你是如何更新IsVisible屬性(是否不小心設置領域,而不是財產?) – 2012-04-02 19:39:57

回答

0

我讀了您使用的棱鏡所以要儘量改變你RaisePropertyChanged這種形式:

RaisePropertyChanged(() => IsVisible); 
+0

謝謝!我嘗試過,但仍然沒有看到UI上的任何更改。 – rajcool111 2012-04-02 22:48:05

+1

是否必須對我的視圖模型做任何事情?上面的代碼是子視圖模型B..which作爲觀察的集合父視圖模型A.最初我被調用B. – rajcool111 2012-04-02 22:50:24

+0

的新實例設置從屬性所以,我認爲有沒有在部分錯誤您發佈的代碼。其他部分肯定有問題,但沒有代碼就不容易幫助你。也許你有一個綁定錯誤,但沒有代碼找不到它。您是否看到輸出窗口中是否有建議? – pluka 2012-04-03 05:55:40

相關問題