我对通用 Windows 平台 (UWP) 和 XAML 还很陌生。
我有一个显示垂直堆叠数据的 GridView。这很好用,但是当我按住 GridView.ItemTemplate/DataTemplate 之一时,我得到一个灰色边框:
我曾尝试将这些属性应用于各种项目但没有成功:
FocusVisualPrimaryThickness="0"
FocusVisualSecondaryThickness="0"
FocusVisualPrimaryBrush="Black"
FocusVisualSecondaryBrush="Black"
FocusVisualMargin="0"
我在这些属性上也注意到了这一点。这是否意味着它尚未实现?:
这是我的代码:
<GridView x:Name="IconGridView"
Canvas.ZIndex="2"
Grid.Row="0"
Margin="398,728,402,107"
ItemClick="Clicked_On_Video_Preview_Image"
IsItemClickEnabled="True"
IsSwipeEnabled="True"
ItemsSource="{x:Bind _videoItems}"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.VerticalScrollMode="Disabled"
BorderThickness="0"
SelectionMode="None"
BorderBrush="Black"
Background="Black" IsHoldingEnabled="False">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Vertical" Background="Black" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate x:DataType="model:VideoItem">
<StackPanel Margin="30,0,30,0" HorizontalAlignment="Center" BorderThickness="0" BorderBrush="Black" Background="Black" Height="245">
<Grid>
<Border Name="PreviewBorder" BorderThickness="2" BorderBrush="#000000" Margin="0,55,0,55">
<Image Height="135" Width="240" Source="{x:Bind ThumbnailFilename}" Loaded="Video_Preview_Loaded" Stretch="UniformToFill" />
</Border>
<Image Margin="0,55,0,55" Height="29" Width="29" Source="Assets/play_vit.png" />
<TextBlock Margin="0,185,0,0" Text="{x:Bind Title}" CharacterSpacing="200" TextWrapping="WrapWholeWords" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="12" Foreground="white" Width="240" Height="45"/>
</Grid>
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
最佳答案
灰色边框是 GridViewItem
的一部分模板。如果您想修改它,您需要创建自己的模板。
您可以通过右键单击设计器中的控件,单击编辑样式,然后编辑副本轻松地做到这一点,这将为您提供默认样式和可根据您自己的需要修改的模板。
在我的例子中,我根本不想修改模板,只是想摆脱它,所以我只是用 ContentPresenter
替换了模板。只显示我自己的内容,像这样:
<Style TargetType="GridViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GridViewItem">
<ContentPresenter ContentTransitions="{TemplateBinding ContentTransitions}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
如果您想知道所有这些 TemplateBinding
在哪里绑定(bind)来自,我只是从默认样式复制它们。我本可以写 <ContentPresenter />
但我更喜欢这样做。
希望这能回答您的问题!
关于c# - UWP 删除 Gridview 中的焦点边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40263514/