在LongListPicker项中的TextBlock上设置自动可见或折叠

本文关键字:折叠 设置 LongListPicker TextBlock | 更新日期: 2023-09-27 18:26:01

我有带有自定义DataTemplate的LongListPicker。在那个DataTemplate中,我有TextBlock,文本绑定到SubItemNames。我还有一个属性SubItemsVisible,它是布尔的,当HasSubItemNames为false时,我想折叠TextBlock。

我创建了转换器:

public class BoolVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool)value ? Visibility.Visible : Visibility.Collapsed;
    }
}

并添加到我的XAML:

<phone:PhoneApplicationPage.Resources>
    <DataTemplate x:Key="StateItemTemplate">
        <StackPanel VerticalAlignment="Top">
            <TextBlock  Text="{Binding ItemName}" Foreground="#DE000000" FontFamily="Segoe WP SemiLight" FontSize="24"  />
            <Path Data="M-65,106 L169.77,106" Fill="#FF0A0AE4" Height="3" Stretch="Fill" Stroke="Black" UseLayoutRounding="False"/>
            <TextBlock  Text="{Binding SubItemNames}" Visibility="{ Binding SubItemsVisible , Converter={StaticResource BoolVisibilityConverter}}" Foreground="#DE636363" FontFamily="Segoe WP SemiLight" FontSize="16"  />
            <Path Data="M-65,106 L169.77,106" Fill="#FF0A0AE4" Height="3" Stretch="Fill" Stroke="Black" UseLayoutRounding="False"/>
        </StackPanel>
    </DataTemplate>

但我仍然缺少一些东西,因为我遇到了错误:资源"BoolVisibilityConverter"无法解析。我应该向XAML页面添加什么?

在LongListPicker项中的TextBlock上设置自动可见或折叠

您需要创建名为BoolVisibilityConverter的静态资源来引用它

您可以在App.xaml中创建它,使其全局可见,也可以在您的Page Resources部分中创建它

首先,添加xmlns语句:

xmlns:converters="clr-namespace:ConverterNamespace"

App.xaml声明示例:

<Application.Resources>
    <ResourceDictionary>
        <converters:BoolVisibilityConverter x:Key="BoolVisibilityConverter" />
    </ResourceDictionary>
</Application.Resources>

Page.xaml声明示例:

<phone:PhoneApplicationPage.Resources>
    <converters:BoolVisibilityConverter x:Key="BoolVisibilityConverter" />
</phone:PhoneApplicationPage.Resources>