我试图控制的可视性绑定到一个全局变量:UWP窗口10能见度绑定到一个全局变量
我有能见度转换器:
public class BooleanToVisibilityConverter : IValueConverter
{
public bool IsReversed { get; set; }
public object Convert(object value, Type targetType, object parameter, string language)
{
return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return value is Visibility && (Visibility)value == Visibility.Visible;
}
}
我还创建了一个类,自DependencyObject继承:
public class Verified : DependencyObject
{
public static readonly DependencyProperty VerifiedUserNameProperty = DependencyProperty.Register(
"VerifiedUserName",
typeof(string),
typeof(Verified),
new PropertyMetadata(string.Empty)
);
public string VerifiedUserName
{
get { return (string)GetValue(VerifiedUserNameProperty); }
set { SetValue(VerifiedUserNameProperty, value); }
}
public static readonly DependencyProperty IsVerifiedProperty = DependencyProperty.Register(
"IsVerified",
typeof(bool),
typeof(Verified),
new PropertyMetadata(false, new PropertyChangedCallback(IsVerifiedChanged))
);
public bool IsVerified
{
get { return (bool)GetValue(IsVerifiedProperty); }
set { SetValue(IsVerifiedProperty, value); }
}
private static void IsVerifiedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Verified container = d as Verified;
bool latestIsVerifiedValue = (bool)e.NewValue;
if (latestIsVerifiedValue == true)
{
//To Do
}
}
}
在我的App.xaml
我创建变量:
public static Verified myValidator = new Verified();
public static BooleanToVisibilityConverter myConverter = new BooleanToVisibilityConverter();
在一个简单的页面中,我添加了一个文本框,并且我想将它的可见性绑定到myValidator变量。
为了实现这个目标,我在代码中创建绑定:
Binding myBinding = new Binding();
myBinding.Source = App.myValidator;
myBinding.Path = new PropertyPath("IsVerified");
myBinding.Mode = BindingMode.OneWay;
myBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
myBinding.Converter = App.myConverter;
BindingOperations.SetBinding(txtName2, VisibilityProperty, myBinding);
在App.xaml中:我设置我的验证的价值是这样的:
App.myValidator.IsVerified = false;
当我导航到简单页面的文本框不可见(OK)。
为了测试行为,我在屏幕上添加了一个按钮,并添加了代码以更改myValidator.isVerified的值。
当我更改我的App.myValidator.IsVerified的值时,文本框的可见性不会改变。我该如何解决这个问题?
尝试在转换器设置断点,看看如果它实际上受到打击。我怀疑它不是。 –
它第一次到达转换器。我更改IsVerified的值时验证器的propertyChange事件始终正确执行。但在第一次转换器没有再被击中之后。 – user1282441
不知道这是否会这样做,但也尝试从'INotifyPropertyChanged'继承并实现它,然后看它是否有效。 –