Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在列表框上使用WPF验证规则来启用';OK';按钮_C#_Wpf_Validation_Listbox - Fatal编程技术网

C# 如何在列表框上使用WPF验证规则来启用';OK';按钮

C# 如何在列表框上使用WPF验证规则来启用';OK';按钮,c#,wpf,validation,listbox,C#,Wpf,Validation,Listbox,我是WPF的新手,有个问题。我只想在选中列表框的en元素时启用按钮,否则必须禁用它。我尝试过使用简单的验证规则,但它不起作用。谁能给我一个提示吗?Ty如果ListBox的SelectedItem属性返回空引用,则不使用ValidationRule启用按钮,但可以使用带有触发器的按钮样式,该触发器绑定到ListBox的SelectedItem属性,并将按钮的IsEnabled属性设置为false,例如: <ListBox x:Name="lb"> <ListBoxItem

我是WPF的新手,有个问题。我只想在选中列表框的en元素时启用按钮,否则必须禁用它。我尝试过使用简单的验证规则,但它不起作用。谁能给我一个提示吗?Ty

如果ListBox的SelectedItem属性返回空引用,则不使用ValidationRule启用按钮,但可以使用带有触发器的按钮样式,该触发器绑定到ListBox的SelectedItem属性,并将按钮的IsEnabled属性设置为false,例如:

<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>

1.
2.
3.

好的,这个很好用。但我必须在满足两个条件时启用该按钮(文本框不为空,列表框中的一项已选中)。我该怎么做

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

<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>

1.
2.
3.

如果对绑定到按钮的命令使用MVVM和
ICommand
界面,则可以定义一个
CanExecute
委托,用于检查SelectedItem!=好的,这很管用。但我必须在满足两个条件时启用该按钮(文本框不为空,列表框中的一项已选中)。我怎么做?你可以再加一个触发器。请参考我编辑的答案。还请记住,一旦您的原始问题得到解决,请接受答案,如果您有其他问题,请提出新问题。