【问题标题】:WPF: enabling button only if one item in ListBox is selectedWPF:仅当列表框中的一项被选中时才启用按钮
【发布时间】:2021-10-20 14:33:51
【问题描述】:

我对 WPF 很陌生,所以请原谅我提出一个原始问题。我研究过类似的问题,关于如何仅在通过绑定在 ListBox 中选择项目时才启用按钮,但我的情况有点复杂。

  1. 如果没有选择 ListBox 中的任何项目,则需要禁用该按钮。
  2. 如果选择列表框中的一项,则需要启用该按钮。
  3. 如果列表框中的多个项目被选中,则需要禁用该按钮。

换句话说,只有当用户在列表框中选择一项时才应该启用它。

我尝试了什么:

<Button Click="EditSingleEntryButton_Click">Edit selected
    <Button.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger 
                    Binding="{Binding ElementName=entriesListBox, Path=SelectedItems.Count}" 
                    Value="0">
                    <Setter Property="Button.IsEnabled" Value="true"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

但是,这不起作用 - 按钮始终保持启用状态。

【问题讨论】:

    标签: wpf vb.net listbox


    【解决方案1】:

    你需要为你的风格添加一点:

    <Button Click="EditSingleEntryButton_Click">Edit selected
        <Button.Style>
            <Style TargetType="Button">
                <Setter Property="IsEnabled" Value="False"/>
                <Style.Triggers>
                    <DataTrigger 
                        Binding="{Binding ElementName=entriesListBox, Path=SelectedItems.Count}" 
                        Value="1">
                        <Setter Property="IsEnabled" Value="true"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>
    

    【讨论】:

    • 非常感谢。在您的示例中,我必须将 Value 更改为 1,否则效果很好。
    • 你是对的。我没有注意它。由于您的评论,我已经更正了代码。
    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2017-07-09
    • 1970-01-01
    • 2018-06-08
    相关资源
    最近更新 更多