繁体   English   中英

WPF Avalon向导绑定问题

[英]WPF Avalon Wizard Binding Issue

我正在使用Avalon Wizard控件,我有很多页面,但只有2个给我带来问题所以它们将包含所有内容:

<Grid Name="MainGrid">
  <w:Wizard Name="MyWizard"
            w:Designer.PageIndex="0"
            DataContext="{Binding ElementName=MainGrid, Path=DataContext.Policy}">
    <w:WizardPage Header="Main Member"
                  MaxHeight="600"
                  AllowNext="{Binding ElementName=MainGrid, Path=DataContext.CanContinue}"
                  Name="MainPage">
      <w:WizardPage Name="DeductionPage"
                    Header="Policy Details"
                    AllowNext="{Binding ElementName=MainGrid, Path=DataContext.CanContinue}">

现在出现问题,主页的允许下一步工作正常,但是在扣除页面上,虽然CanContinue属性设置为false,但下一个按钮始终可用!

请注意,加载第二页时, CanContinue仅设置为false。

    private bool canContinue;
public bool CanContinue
{
  get { return canContinue; }
  set
  {
    canContinue = value;
    NotifyPropertyChanged("CanContinue");
  }
}

-

UPDATE

我查看了输出窗口,发现以下异常:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=MainGrid'. BindingExpression:Path=DataContext.CanContinue; DataItem=null; target element is 'WizardPage' (Name='DeductionPage'); target property is 'AllowNext' (type 'Boolean')

这是在我的问题所在的页面上发生的,但为什么仅在第二页上出现问题? 第一页和第二页绑定到完全相同的东西,第一页完美地运作!

问题出现在除第一页之外的所有页面上,所有页面都是同一级别的同一向导的子项。

有什么建议么?

没有看到CanContinue的代码,这是一个猜测。 但是,在这些情况下,罪魁祸首通常是由于没有引发INotifyPropertyChanged事件的属性。 在您的情况下,属性CanContinue必须引发INotifyPropertyChanged事件。

基本上,每当需要评估CanContinue的值时,必须引发INotifyPropertyChanged。 这将通知UI, CanContinue的值已更改,UI必须重新评估绑定。

通常,INotifyPropertyChanged会在属性本身之外被提升。 例如,当某个方法执行某些工作时,需要确保UI仍然正确绑定。 在您的情况下,这可能是在页面之间导航时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM