如何在 WPF 中制作条件扩展器

How to make conditional Expander in WPF

我有一个很简单的任务。

我已经创建了一个自定义扩展器,所以它工作正常。

我只是坚持让它成为有条件的

如果我的文本内容是更多,我想显示扩展器,否则我不想显示。

这是它的图片

听起来您可能需要一些 custom converters。你可以这样做:

public class LengthConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value?.GetType() == typeof(string))
        {
            string text = (string)value;
            return text.Length > 20 ? Visibility.Visible : Visibility.Collapsed;
        }
        return Visibility.Collapsed;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

然后像这样在 xaml 中使用它:

<Window.Resources>
    <local:LengthConverter x:Key="LengthConverter" />
</Window.Resources>

...

<Expander Visibility="{Binding SomeText, Converter={StaticResource LengthConverter}}">
    <TextBlock Text="{Binding SomeText}" />
</Expander>

这不是一个完整的解决方案。我不知道你的扩展器是什么样的,你会想要让它响应而不是硬编码字符串的长度。但这可能会让您走上正确的道路。