我有下面的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