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

问题描述 投票:0回答:1

我有一个

<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>
c++ xaml winrt-xaml uwp-xaml c++-winrt
1个回答
0
投票

请尝试以下代码:

// TestOrder is the target item's source.
auto container = m_ListViewTest().ContainerFromItem(TestOrder);
Windows::UI::Xaml::Controls::ListViewItem item = container.as<Windows::UI::Xaml::Controls::ListViewItem>();
item.IsEnabled(false);

这是我用

ListView
制作的示例代码,你只需要把
ListView
改成
GridView

确保在加载目标项时调用它。

© www.soinside.com 2019 - 2024. All rights reserved.