XAML UWP C++WinRT如何禁用GridView中的单个项目

dxxyhpgq  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(99)

我有一个<GridView/>与ItemsSource绑定到IObservableVector<DeviceViewModel>。我想禁用此GridView中的少数项目。我怎么做?我看到其他类似的问题,但他们似乎不完整,不是在C++/WinRT。
以下是我的GridView

<GridView x:Name="DeviceTargets"
    x:Uid="SDeviceTargets"
    Grid.Row="1"
    x:DeferLoadStrategy="Lazy"
    Visibility="Collapsed"
    Margin="12 14 12 10"
    IsItemClickEnabled="True"
    ItemClick="OnDeviceTargetsItemClicked"
    ItemContainerStyle="{StaticResource GridViewItemStyleSV}"
    ItemsSource="{x:Bind ViewModel.DeviceList, Mode=OneWay}"
    Padding="0"
    SelectionMode="None"
    ScrollViewer.HorizontalScrollMode="Disabled"
    ScrollViewer.VerticalScrollMode="Disabled">
    <GridView.ItemTemplate>
        <DataTemplate x:DataType="viewModels:DeviceViewModel">
            <local:DeviceItem ViewModel="{x:Bind}"/>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>
vkc1a9a2

vkc1a9a21#

请尝试以下代码:

// TestOrder is the data model you used
auto container = m_GridView().ContainerFromItem(TestOrder);
Windows::UI::Xaml::Controls::GridViewItem item = container.as<Windows::UI::Xaml::Controls::GridViewItem>();
item.IsEnabled(false);

请确保在加载目标项时调用此函数。
结果如下所示:

相关问题