xamarin 如何将ItemsSource从DataTemplate中的一个控件传递到转换器

mtb9vblg  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(223)

如果集合中只有一个项目,我想隐藏项目符号的圆圈控件。如果集合计数超过一个,则启用它。
这是我的密码

<StackLayout BindableLayout.ItemsSource="{Binding Description}">
<BindableLayout.ItemTemplate>
    <DataTemplate>
        <StackLayout>
            <cc:CustCircle
                IsVisible="{Binding .,Converter={StaticResource CollectionToCountConverter}}"
                CornerRadius="5">
            </cc:CustCircle>
            <Label
                   Text="{Binding .,Mode=TwoWay}">
            </Label>
        </StackLayout>
    </DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>

当我传递集合Description时,根本没有调用converter,当我传递Binding .时,converter值显示为null。
如何检查收集计数并启用禁用cc:CustCircle

e3bfsja2

e3bfsja21#

我们必须为内容页面提供名称,以访问数据模板中的父绑定属性。

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MainPage"
             x:Name="mainpage">
<StackLayout x:Name="stackList" BindableLayout.ItemsSource="{Binding Description}">
<BindableLayout.ItemTemplate>
    <DataTemplate>
        <StackLayout>
            <cc:CustCircle
                IsVisible="{Binding Source={x:Reference mainpage},Path=BindingContext.Description.Count,Converter={StaticResource CollectionToCountConverter}}"
                CornerRadius="5">
            </cc:CustCircle>
            <Label
                   Text="{Binding .,Mode=TwoWay}">
            </Label>
        </StackLayout>
    </DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
</ContentPage>

在您的CollectionToCountConverter中,只需检查

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if((int)value > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

编辑:如果页面名称未按预期工作,请使用StackLayout名称

IsVisible="{Binding Source={x:Reference stackList},Path=BindingContext.Description.Count,Converter={StaticResource CollectionToCountConverter}}"

相关问题