Как изменить выбранный элемент из списка в uwp? - PullRequest
0 голосов
/ 25 октября 2018

Как выполнить следующие задачи в UWP?

  1. Выбрать только один элемент из ListView
  2. Изменить цвет выбранного элемента с синего на красный
  3. Доступ ко всем свойствам выбранного элемента

Ответы [ 2 ]

0 голосов
/ 26 октября 2018
Измените цвет выбранного элемента с синего на красный

Ашик Хасан ответил на ваш вопрос 1 и 3.Я просто добавляю ответ на ваш второй вопрос.

Чтобы изменить цвет фона выбранного элемента с синего на красный.Вы можете изменить ListViewItem стили и шаблоны напрямую.Это проще, чем изменить его в коде позади.Вам просто нужно установить SelectedBackground свойство ListViewItemPresenter в ControlTemplate ListViewItem.

<Page.Resources>
    <x:Double x:Key="ListViewItemContentOffsetX">-40.5</x:Double>
    <x:Double x:Key="ListViewItemDisabledThemeOpacity">0.55</x:Double>
    <x:Double x:Key="ListViewItemDragThemeOpacity">0.60</x:Double>
    <x:Double x:Key="ListViewItemReorderHintThemeOffset">10.0</x:Double>
    <x:Double x:Key="ListViewItemSelectedBorderThemeThickness">4</x:Double>
    <x:Double x:Key="ListViewItemMinWidth">88</x:Double>
    <x:Double x:Key="ListViewItemMinHeight">44</x:Double>
    <Thickness x:Key="ListViewItemCompactSelectedBorderThemeThickness">4</Thickness>

    <Style TargetType="ListViewItem">
        <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
        <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
        <Setter Property="TabNavigation" Value="Local"/>
        <Setter Property="IsHoldingEnabled" Value="True"/>
        <Setter Property="Padding" Value="12,0,12,0"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="MinWidth" Value="{ThemeResource ListViewItemMinWidth}"/>
        <Setter Property="MinHeight" Value="{ThemeResource ListViewItemMinHeight}"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListViewItem">
                    <ListViewItemPresenter
      ContentTransitions="{TemplateBinding ContentTransitions}"
      SelectionCheckMarkVisualEnabled="True"
      CheckBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
      CheckBoxBrush="{ThemeResource SystemControlForegroundBaseMediumHighBrush}"
      DragBackground="{ThemeResource ListViewItemDragBackgroundThemeBrush}"
      DragForeground="{ThemeResource ListViewItemDragForegroundThemeBrush}"
      FocusBorderBrush="{ThemeResource SystemControlForegroundAltHighBrush}"
      FocusSecondaryBorderBrush="{ThemeResource SystemControlForegroundBaseHighBrush}"
      PlaceholderBackground="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}"
      PointerOverBackground="{ThemeResource SystemControlHighlightListLowBrush}"
      PointerOverForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
      SelectedBackground="Red"
      SelectedForeground="{ThemeResource SystemControlHighlightAltBaseHighBrush}"
      SelectedPointerOverBackground="{ThemeResource SystemControlHighlightListAccentMediumBrush}"
      PressedBackground="{ThemeResource SystemControlHighlightListMediumBrush}"
      SelectedPressedBackground="{ThemeResource SystemControlHighlightListAccentHighBrush}"
      DisabledOpacity="{ThemeResource ListViewItemDisabledThemeOpacity}"
      DragOpacity="{ThemeResource ListViewItemDragThemeOpacity}"
      ReorderHintOffset="{ThemeResource ListViewItemReorderHintThemeOffset}"
      HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
      VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
      ContentMargin="{TemplateBinding Padding}"
      CheckMode="Inline"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Page.Resources>

<Grid>
    <ListView>
        <ListViewItem>abc</ListViewItem>
        <ListViewItem>def</ListViewItem>
        <ListViewItem>ghi</ListViewItem>
    </ListView>
</Grid>

enter image description here

0 голосов
/ 25 октября 2018
  1. Set SelectionMode = "Single" элемента управления List View
  2. // Нужна дополнительная информация ..
  3. Set IsItemClickEnabled = "true" и сделать обработчик события ItemClick

в коде позади

private void ListView_ItemClick(object sender, ItemClickEventArgs e)
    {
        // retrieve all properties from e.ClickedItem
        // cast it to your model class
        var obj = e.ClickedItem; 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...