gpt4 book ai didi

c# - WPF Avalon 向导绑定(bind)问题

转载 作者:行者123 更新时间:2023-11-30 18:35:35 27 4
gpt4 key购买 nike

我正在使用 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");
}
}

--

更新

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

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')

这发生在我的问题所在的页面上,但为什么它只出现在第二页上?第一页和第二页绑定(bind)到完全相同的内容,并且第一页完美运行!

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

有什么建议吗?

最佳答案

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

本质上,每当需要评估 CanContinue 的值时,都必须引发 INotifyPropertyChanged。这将向 UI 发出信号,表明 CanContinue 的值已更改,并且 UI 必须重新评估绑定(bind)。

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

关于c# - WPF Avalon 向导绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853824/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com