gpt4 book ai didi

WPF ToggleButton IsChecked 绑定(bind)问题

转载 作者:行者123 更新时间:2023-12-01 09:39:52 25 4
gpt4 key购买 nike

我正在尝试创建一种情况,即两个 ToggleButton 的分组中的一个或一个都可以随时打开。我遇到的问题是,如果我更改 UI 状态不会更新的支持变量的状态。

我确实实现了 INotifyPropertyChanged

我已经像这样创建了我的 ToggleButton:

        <ToggleButton IsChecked="{Binding Path=IsPermanentFailureState, Mode=TwoWay}"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
<TextBlock TextWrapping="Wrap"
TextAlignment="Center">Permanent Failure</TextBlock>
</ToggleButton>
<ToggleButton IsChecked="{Binding Path=IsTransitoryFailureState, Mode=TwoWay}"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
<TextBlock TextWrapping="Wrap"
TextAlignment="Center">Temporary Failure</TextBlock>
</ToggleButton>

这是我的支持属性(我使用的是 MVVM 模式,其他绑定(bind)工作,IE 点击 ToggleButton 确实会进入这些属性设置。当我通过代码更改状态时,切换按钮不改变视觉状态。我将支持属性设置为 false,但按钮保持选中状态。

    public bool? IsPermanentFailureState
{
get { return isPermFailure; }
set
{
if (isPermFailure != value.Value)
{
NotifyPropertyChanged("IsPermanentFailureState");
}
isPermFailure = value.Value;
if (isPermFailure) IsTransitoryFailureState = false;
}
}

public bool? IsTransitoryFailureState
{
get { return isTransitoryFailureState; }
set
{
if (isTransitoryFailureState != value.Value)
{
NotifyPropertyChanged("IsTransitoryFailureState");
}
isTransitoryFailureState = value.Value;
if (isTransitoryFailureState) IsPermanentFailureState = false;
}
}

最佳答案

问题在于您在实际更改属性值之前提出了属性更改通知。因此,WPF 读取属性的旧值,而不是新值。改为:

public bool? IsPermanentFailureState
{
get { return isPermFailure; }
set
{
if (isPermFailure != value.Value)
{
isPermFailure = value.Value;
NotifyPropertyChanged("IsPermanentFailureState");
}
if (isPermFailure) IsTransitoryFailureState = false;
}
}

public bool? IsTransitoryFailureState
{
get { return isTransitoryFailureState; }
set
{
if (isTransitoryFailureState != value.Value)
{
isTransitoryFailureState = value.Value;
NotifyPropertyChanged("IsTransitoryFailureState");
}
if (isTransitoryFailureState) IsPermanentFailureState = false;
}
}

顺便说一句,你说当你使用界面而不是代码时它可以工作,但我看不出它可能。

关于WPF ToggleButton IsChecked 绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1378894/

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