Gep*_*pro 6 wpf binding static
该应用程序是使用C#和WPF开发的.我有一个数据绑定到非静态类的静态属性.启动应用程序时,绑定运行良好,但如果我更改了绑定的bool,则视图未更新.如何更新此静态属性的绑定?NotifyChanged-Events不受影响.
班级:
public class ViewTemplateManager : NotifyBase
{
public static bool CanResizeColumns { get; set; }
static ViewTemplateManager()
{
CanResizeColumns = true;
}
Run Code Online (Sandbox Code Playgroud)
风景:
<Thumb x:Name="PART_HeaderGripper" IsEnabled="{Binding Source={x:Static Member=viewManager:ViewTemplateManager.CanResizeColumns}}"
Run Code Online (Sandbox Code Playgroud)
执行此操作的唯一方法是,如果您对相关的BindingExpression有引用.
假设您在代码中引用了Thumb,它看起来像:
var bindingExpression = thumb.GetBindingExpression(Thumb.IsEnabledProperty);
if (bindingExpression != null)
bindingExpression.UpdateTarget();
Run Code Online (Sandbox Code Playgroud)
你最好的选择是使用单例模式,如下所示:
public class ViewTemplateManager : NotifyBase
{
public bool CanResizeColumns { get; set; }
public static ViewTemplateManager Instance { get; private set; }
static ViewTemplateManager()
{
Instance = new ViewTemplateManager();
}
private ViewTemplateManager()
{
CanResizeColumns = true;
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样绑定:
<Thumb x:Name="PART_HeaderGripper" IsEnabled="{Binding Source={x:Static viewManager:ViewTemplateManager.Instance}, Path=CanResizeColumns}}"
Run Code Online (Sandbox Code Playgroud)
然后,您只需在更改CanResizeColumns时引发INotifyPropertyChanged.PropertyChanged事件.
| 归档时间: |
|
| 查看次数: |
3928 次 |
| 最近记录: |