Jar*_*red 7 c# xaml binding visibility
我在互联网上看到了很多将布尔值绑定到XAML中控件的Visibility属性的示例.大多数好例子都使用BooleanToVisibiliy转换器.
我想在控件上设置Visible属性以绑定到代码隐藏中的System.Windows.Visibility属性,但它似乎不想工作.
这是我的XAML:
<Grid x:Name="actions" Visibility="{Binding Path=ActionsVisible, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)
这是属性的代码:
private Visibility _actionsVisible;
public Visibility ActionsVisible
{
get
{
return _actionsVisible;
}
set
{
_actionsVisible = value;
}
}
Run Code Online (Sandbox Code Playgroud)
在Window的构造函数中,我也有这个调用:
base.DataContext = this;
Run Code Online (Sandbox Code Playgroud)
当我更新ActionsVisible或this.actions.Visibility时,状态不会传输.对可能出错的任何想法?
小智 8
将您的属性更改为DependencyProperty.这将为您处理更新.
public Visibility ActionsVisible
{
get { return (Visibility)GetValue(ActionsVisibleProperty); }
set { SetValue(ActionsVisibleProperty, value); }
}
// Using a DependencyProperty as the backing store for ActionsVisible. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ActionsVisibleProperty =
DependencyProperty.Register("ActionsVisible", typeof(Visibility), typeof(FooForm));
Run Code Online (Sandbox Code Playgroud)
我认为问题是WPF无法知道您的ActionsVisible属性已经更改,因为您没有通知事实.
您的类需要实现INotifyPropertyChanged,然后在ActionsVisible的set方法中,您需要使用ActionsVisible作为已更改的属性名称触发PropertyChanged事件.
希望这可以帮助...
| 归档时间: |
|
| 查看次数: |
22895 次 |
| 最近记录: |