Wpf 未使用DataTriggers将绑定属性更改回

Wpf 未使用DataTriggers将绑定属性更改回,wpf,xaml,datatrigger,Wpf,Xaml,Datatrigger,我尝试使用绑定到IsChecked属性和DataTriggers为2个ToggleButton创建简单的逻辑,以便在第二个ToggleButton中捕获绑定的值,如下所示: <ToggleButton ToolTip="{Binding Source={StaticResource CameraLocalization}, Path=ToolTips.SyncMovementXYZ, Mode=OneWay, UpdateSourceTrigger=PropertyChanged

我尝试使用绑定到IsChecked属性和DataTriggers为2个ToggleButton创建简单的逻辑,以便在第二个ToggleButton中捕获绑定的值,如下所示:

<ToggleButton 
    ToolTip="{Binding Source={StaticResource CameraLocalization}, Path=ToolTips.SyncMovementXYZ, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
    Tag="{Binding Path=CameraAcceleration, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">
    <ToggleButton.Style>
        <Style TargetType="ToggleButton" BasedOn="{StaticResource CameraSyncLastSectionStyle}">
                    <Setter Property="IsChecked" Value="{Binding Path=Property1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></Setter>
            <Setter Property="Content" Value="{DynamicResource PinIcon}"></Setter>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Property2, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" Value="True">
                    <Setter Property="IsChecked" Value="False"></Setter>
                </DataTrigger>
                <Trigger Property="IsChecked" Value="False">
                    <Setter Property="Content" Value="{DynamicResource UnpinIcon}"></Setter>
                </Trigger>
                </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>
<ToggleButton
    ToolTip="{Binding Source={StaticResource CameraLocalization}, Path=ToolTips.SyncMovementXY, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
    Tag="{Binding Path=CameraAcceleration, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}">
    <ToggleButton.Style>
        <Style TargetType="ToggleButton" BasedOn="{StaticResource CameraSyncAdditionalStyle}">
            <Setter Property="IsChecked" Value="{Binding Path=Property2, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></Setter>
            <Setter Property="Content" Value="{DynamicResource PinIcon}"></Setter>
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="False">
                    <Setter Property="Content" Value="{DynamicResource UnpinIcon}"></Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
</ToggleButton>
当第二个Togglebutton未选中时,第一个按钮也必须未选中,但据我所见,属性CameraAcceleration.Config.UI.IsSyncMovementXYZAActivated未设置为false,尽管第一个按钮的IsChecked属性设置为false,因此,当我取消选中第二个按钮时,第一个按钮再次被选中。 预期结果:第一个按钮必须保持未选中状态

我做错了什么

<DataTrigger Binding="{Binding Path=CameraAcceleration.Config.UI.IsSyncMovementXYActivated, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" Value="True">
这一行可能是错误。将模式=单向更改为模式=双向


为了在与视图交互时更新属性,模式必须始终设置为双向。

将代码发布到XAML标记后面。实际上,您不需要任何触发器,两个切换按钮的双向绑定就可以了。我确实需要触发器,至少可以根据其状态更改按钮内容。此外,我还需要绑定到我的属性,如:Path=cameracleration.Config.UI.IsSyncMovementXYZActivated、Mode=TwoWay、UpdateSourceTrigger=PropertyChanged以了解当前状态是否使用MVVM模式?如果是这样,可以将状态表示为布尔值,并将属性绑定到两个ToggleButtons。如果设置了布尔属性,则两个切换按钮都会更改其状态。如果这是你想要的,我可以写一个详细的答案。诀窍是这两个按钮需要绑定到不同的属性。我唯一想做的事情——我在我的第一篇文章中描述过——仅此而已。是否可以仅使用XAML来丰富此内容?不,它没有任何效果,因为IsSyncMovementXYActivated和IsSyncMovementXYZ激活了其不同的属性。在datatrigger中,我只听属性更改。就这些。一个有趣的事实。如果我删除这一行:一切都按预期进行。但是在这种情况下,我失去了绑定。对不起,您的属性名称非常混乱,很难区分。请更新您的问题,并包括IsSyncMovementXYActivated和IsSyncMovementXYZAActivated的实现。我有另一个想法,但我需要实现以确认这一点。我更改了属性名称,以避免混淆任何人。希望现在情况更清楚。当然,可以将其视为类内具有INotifyPropertyChanged接口实现的简单boll变量