我有下面的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
}
在調試我發現我的二傳手被更改屬性價值,但它不會在我的轉換器上達到斷點。在加載窗口時,轉換器只會在最初被擊中。之後,即使屬性發生變化,它也不會被觸發。
是屬性更改正確?也就是說,它是通過財產設定的,而不是直接針對現場?你沒有向我們顯示該代碼。 – 2012-04-02 19:12:54
我使用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
謝謝,但這不是我問的。我問你是如何更新IsVisible屬性(是否不小心設置領域,而不是財產?) – 2012-04-02 19:39:57