如何在列表框上使用WPF验证规则以启用“确定”按钮

时间:2017-01-10 13:30:07

标签: c# wpf validation listbox

我是WPF的新手,我遇到了问题。我想只在选择了列表框的元素时才启用按钮,否则必须禁用它。我尝试过简单的验证规则,但它没有用。任何人都可以给我一个提示吗? TY

1 个答案:

答案 0 :(得分:1)

您没有使用ValidationRule来启用Button但您可以使用带有触发器的Button样式,该触发器绑定到ListBox的SelectedItem属性,并且如果SelectedItem属性为,则将Button的IsEnabled属性设置为false。 ListBox返回一个空引用,例如:

<ListBox x:Name="lb">
    <ListBoxItem>1</ListBoxItem>
    <ListBoxItem>2</ListBoxItem>
    <ListBoxItem>3</ListBoxItem>
</ListBox>

<Button Content="Button">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedItem, ElementName=lb}" Value="{x:Null}">
                    <Setter Property="IsEnabled" Value="False" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
  

好的,这很好用。但是我在满足2个条件时启用了按钮(文本框不为空且选中了列表框的项目)。我怎么能这样做?

您可以添加另一个触发器:

<ListBox x:Name="lb">
    <ListBoxItem>1</ListBoxItem>
    <ListBoxItem>2</ListBoxItem>
    <ListBoxItem>3</ListBoxItem>
</ListBox>

<TextBox x:Name="txt" />

<Button Content="Button">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedItem, ElementName=lb}" Value="{x:Null}">
                    <Setter Property="IsEnabled" Value="False" />
                </DataTrigger>
                <DataTrigger Binding="{Binding Text.Length, ElementName=txt}" Value="0">
                    <Setter Property="IsEnabled" Value="False" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>