如何在 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>
这不是一个完整的解决方案。我不知道你的扩展器是什么样的,你会想要让它响应而不是硬编码字符串的长度。但这可能会让您走上正确的道路。
我有一个很简单的任务。
我已经创建了一个自定义扩展器,所以它工作正常。
我只是坚持让它成为有条件的
如果我的文本内容是更多,我想显示扩展器,否则我不想显示。
这是它的图片
听起来您可能需要一些 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>
这不是一个完整的解决方案。我不知道你的扩展器是什么样的,你会想要让它响应而不是硬编码字符串的长度。但这可能会让您走上正确的道路。