我使用Visual Studio 2022创建一个WPF应用程序.我在Windows框架中有两个复选框,grade_4_CBgrade_4_centered_CB,如下所示:

<Window>
    <Grid>
        <Viewbox Stretch=" fill">
            <Canvas Width=" 1100" Height=" 620">
                <CheckBox x:Name="grade_4_CB" Content="Grade 4" />
                <CheckBox x:Name="grade_4_centered_CB" Content="Grade 4 Centered"/> 
            </Canvas>
        </Viewbox>
    </Grid>
</Window>

现在,当我点击grade_4_CB时(IsChecked="True"),grade_4_centered_CB‘S IsEnabled="True".

在没有点击grade_4_CB时(IsChecked="False"),grade_4_centered_CB‘S IsEnabled="False"

我试着加到grade_4_centered_CB后面,比如,

<CheckBox x:Name="grade_4_centered_CB" Content="Grade 4 Centered">
    <CheckBox.Style>
        <Style TargetType="CheckBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=grade_4_CB, Path=IsChecked}" Value="True">
                    <Setter Property="IsEnabled" Value="True" />
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=grade_4_CB, Path=IsChecked}" Value="False">
                    <Setter Property="IsEnabled" Value="False" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </CheckBox.Style>
</CheckBox>

然而,我得到了一个错误,

错误XLS0415:在类型‘CheckBox’上找不到可附加的属性‘style’

另一种方法是将<CheckBox.Style>替换为<CheckBox.Resources>,但我得到了类似的错误.

此外,我还try 直接修改右列(Common-IsEnable-Data bindingDialog)中grade_4_centered_CB的属性,找到并添加grade_4_CB-Path(IsChecked),但无论是False字符串还是True字符串,grade_4_centered_CB都没有变化

推荐答案

Most likely you have an error in something else. Your styling option is correct and should work correctly.
I checked it like this:

<Window ---------------
        --------------->
    <Grid>
        <StackPanel Width=" 1100" Height=" 620">
            <CheckBox x:Name="grade_4_CB" Content="Grade 4" />
            <CheckBox x:Name="grade_4_centered_CB" Content="Grade 4 Centered">
                <CheckBox.Style>
                    <Style TargetType="CheckBox">
                        <Style.Triggers>
                            <!--This trigger for True is superfluous. It can be removed.-->
                            <DataTrigger Binding="{Binding ElementName=grade_4_CB, Path=IsChecked}" Value="True">
                                <Setter Property="IsEnabled" Value="True" />
                            </DataTrigger>
                            <DataTrigger Binding="{Binding ElementName=grade_4_CB, Path=IsChecked}" Value="False">
                                <Setter Property="IsEnabled" Value="False" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </CheckBox.Style>
            </CheckBox>
        </StackPanel>
    </Grid>
</Window>

同样的行为也可以在没有风格触发器的情况下实现.仅使用绑定.

    <Grid>
        <StackPanel Width=" 1100" Height=" 620">
            <CheckBox x:Name="grade_4_CB" Content="Grade 4" />
            <CheckBox x:Name="grade_4_centered_CB" Content="Grade 4 Centered"
                      IsEnabled="{Binding IsChecked, ElementName=grade_4_CB}"/>
        </StackPanel>
    </Grid>

Csharp相关问答推荐

从Key Vault中提取值以在本地dev web.connect中使用

如何在Reflection. Emit中使用具有运行时定义的类型参数的泛型类型

一种安全的方式来存储SSH凭证(MAUI/C#应用程序)

如何注册接口类型,类型<>

为什么SignalR在每个Blazor服务器应用程序启动时最多启动8个服务器?

使用带有WithAppOnly()请求选项的pageIterator

ASP.NET配置kestrel以使用Windows证书存储中的HTTPS

方法从数据表中只 Select 一个条件?

C#普罗米修斯指标

为什么我可以用硬编码的集合而不是变量来设置没有setter的IList属性的值?

.Net MAUI,在将FlyoutPage添加到容器之前,必须设置添加构造函数导致Flyout和Detail"

如何让游戏对象在切换场景时被销毁,但在开始新游戏时重新锁定

如何在使用属性 Select 器时判断是否可以为空

是否可以从IQueryable T中获取一个IdentyEntry T>

Foreach非常慢的C#

try 创建一个C#程序,该程序使用自动实现的属性、覆盖ToString()并使用子类

Xamarin.Forms项目中缺少MainPage.xaml

避免在特定区域中设置Visual Studio代码的自动格式

如何保存具有多个重叠图片框的图片框?

处理方法内部过滤与外部过滤