gpt4 book ai didi

wpf - 如何禁用列表框wpf中的复选框

转载 作者:行者123 更新时间:2023-12-03 10:17:29 27 4
gpt4 key购买 nike

我有一个带有 DataTemplate 的 ListBox,如下所示:

        <ListBox  ItemsSource="{Binding Reportes,Mode=TwoWay}"  >
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel IsEnabled="{Binding PantallaActiva}">
<CheckBox FontWeight="Bold" HorizontalAlignment="Left"
Content="{Binding NORepo,Mode=TwoWay }"
IsChecked="{Binding Path=EmitirReporte,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock FontSize="9" Foreground="Gray" TextWrapping="Wrap" Text="{Binding DSRepo,Mode=TwoWay}" MaxWidth="140" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>

</ListBox>

属性“PantallaActiva”是我的 ViewModel 中的真/假属性,当某些进程启动时设置为假。当该过程开始时,我需要禁用复选框。我的问题是,复选框或堆栈面板永远不会发生,在我的 viewModel 中看不到 PantallaActiva 属性或任何其他属性,他们只能看到项目集合 Reportes[i] 中的属性,我想这就是我的问题,那么我该怎么做绑定(bind)呢?

提前致谢

最佳答案

如果我正确理解您的问题,PantallaActiva 属性不属于您的 Reporte 类(您的集合中的元素)。它可能是您的 View 模型上的一个属性,对吧?

您的 ItemTemplate 的范围绑定(bind)到类型 Reporte,因为您将该集合绑定(bind)为 ItemsSource。这就是 XAML 绑定(bind)找不到该类型的属性的原因。您需要将 IsEnabled 属性绑定(bind)到 ViewModel 上的属性。

<CheckBox IsEnabled="{Binding Path=DataContext.PantallaActiva, RelativeSource={RelativeSource AncestorType=MyControlType}}" .../>

为此,您需要将 MyControlType 设置为可视树上的一个元素,其 DataContext 绑定(bind)到您的 View 模型。 (可能是您的 ListBox 的父级)

在您的 View 模型中查看代码会很有帮助。

关于wpf - 如何禁用列表框wpf中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43212600/

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