2016-03-13 3 views
2

У меня есть это gridview, который отлично работает, но каждый раз, когда я выбираю элемент, я получил эту синюю линию вокруг элемента, как его удалить?Как избавиться от рамки выбора рамки GridView UWP

<GridView Margin="5,15,0,0" x:Name="List" ItemsSource="{Binding}" SelectionChanged="List_SelectionChanged"> 
     <GridView.ItemTemplate> 
      <DataTemplate> 
       <Grid Margin="11"> 
        <StackPanel BorderBrush="Black" Orientation="Vertical"> 
         <Image Width="150" Height="150" Source="{Binding Way}" /> 
        </StackPanel> 
       </Grid> 
      </DataTemplate> 
     </GridView.ItemTemplate> 
     <GridView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <ItemsWrapGrid MaximumRowsOrColumns="2" Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
     </GridView.ItemsPanel> 
    </GridView> 

enter image description here

ответ

1

Чтобы удалить синие границы выделения из GridView, мы можем изменить шаблон GridView. Чтобы изменить шаблон GridViewItem, мы можем выбрать GridView в «Структура документа» и правой кнопкой мыши, а затем выберите «Изменить дополнительные шаблоны„→“Edit Сформирован Item Контейнер (ItemContainerStyle)» → "Редактировать Копию ... ".

В Style в нем находится ListViewItemPresenter.

При разработке для Windows 10, используйте ListViewItemPresenter вместо GridViewItemPresenter в вашем стиле контейнера деталь, как для ListView и GridView.

Для получения дополнительной информации см. ListViewItemPresenter.

Цвет синей линии вокруг предмета определяется по SelectedBackground="{ThemeResource SystemControlHighlightAccentBrush}". Мы можем установить SelectedBackground="Transparent", тогда нет синей линии вокруг элемента.

+0

Привет, я только что нашел '' SystemControlDisabledTransparentBrush ", но не прозрачный! –

+0

'SystemControlDisabledTransparentBrush' использует' ThemeResource', Transparent - это цвет. –

+1

Я изменил на 'SelectedBackground =" Прозрачный "' и все еще показывает синий материал! –

1

Вот как я это делаю. Хотя изменить стиль не сложно, для этого требуется примерно на 99% меньше xaml (и немного больше кода). Вам нужно будет удалить событие SelectionChanged, указать тип данных для DataTemplate и добавить событие Tapped к каждому элементу.

<GridView SelectionMode="None" ItemsSource="{Binding}" 
    <GridView.ItemTemplate> 
     <DataTemplate x:DataType="YourType"> 
      <Grid Tapped="Grid_Tapped_For_Every_Item"> 
       ...     
      </Grid> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
    ... 
</GridView> 

in code file: 

private void Grid_Tapped_For_Every_Item(object sender, TappedRoutedEventArgs e){ 

    var g = (Grid) sender; 
    var myClass = (YourType)g.DataContext; 
    //Do whatever you were going to do in the SelectionChanged event 
} 
Смежные вопросы