XAML 如何修复错误“XLS0432 The property 'IsEmpty' was not found in type 'String' in WPF

ctzwtxfj  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(98)

我正在做一个搜索框,在这个过程中我得到一个错误的行
Visibility="{Binding ElementName=txtSearch,Path=Text.IsEmpty,Converter={StaticResource BoolToVis}}”
特别是在Path= Text. IsEmpty下。我假设这个错误发生是因为searchBox的值有时会为null,但我不知道如何摆脱它。
只要错误出现,我仍然可以编译和运行应用程序,我正在为搜索框,但搜索框的设计不是我想要的。它显示了我做的搜索框的 backbone ,而不是我为它做的名为“txtsearch”的样式。

ehxuflar

ehxuflar1#

您可以通过在DataTrigger中使用Text.Length来控制基于TextBox为空的控件的可见性:

<TextBox x:Name="txtSearch" />

<TextBlock Text="{Binding Text.Length, ElementName=txtSearch}">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Visibility"
                    Value="Visible" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding Text.Length, ElementName=txtSearch}" Value="0">
                    <Setter Property="Visibility"
                            Value="Hidden" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

字符串
您也可以为此创建一个自定义的EmptyToHidden转换器,它不需要样式:

public class EmptyToHidden : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value is string strValue &&
            !string.IsNullOrWhiteSpace(strValue))
        {
            return Visibility.Visible;
        }

        return Visibility.Hidden;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

相关问题