我嘗試創建的模板在某些專案上顯示不需要的行。我不明白為什么。這是控制模板:
<ControlTemplate TargetType="RadioButton" x:Key="SidebarItem">
<ControlTemplate.Resources>
<ResourceDictionary>
<Style TargetType="Border">
<Setter Property="Margin" Value="0"></Setter>
<Setter Property="Padding" Value="0"></Setter>
<Setter Property="BorderThickness" Value="0"></Setter>
<Setter Property="BorderBrush" Value="#312B57"></Setter>
</Style>
</ResourceDictionary>
</ControlTemplate.Resources>
<Border Background="#312b57">
<StackPanel Orientation="Vertical" Margin="25 0 0 0">
<Border Height="20" x:Name="TopContainer" >
<Border x:Name="Top" Background="#312B57" Padding="0"></Border>
</Border>
<Border x:Name="Middle" CornerRadius="10 0 0 10" Padding="15 8" Width="150" HorizontalAlignment="Right">
<TextBlock x:Name="TextBlock" Text="{TemplateBinding Content}"></TextBlock>
</Border>
<Border Height="20" x:Name="BottomContainer" Padding="0">
<Border x:Name="Bottom" Background="#312B57" Padding="0" ></Border>
</Border>
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Middle" Property="Background" Value="#fff"></Setter>
<Setter TargetName="TopContainer" Property="Background" Value="#fff"></Setter>
<Setter TargetName="BottomContainer" Property="Background" Value="#fff"></Setter>
<Setter TargetName="Top" Property="CornerRadius" Value=" 0 0 25 0"></Setter>
<Setter TargetName="TextBlock" Property="Foreground" Value="#312B57"></Setter>
<Setter TargetName="Bottom" Property="CornerRadius" Value="0 25 0 0"></Setter>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="TextBlock" Property="Foreground" Value="#fff"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
實施:
<ItemsControl x:Name="Sidebar" Background="Transparent" BorderThickness="0" Margin="0 25" BorderBrush="Transparent" Padding="0 10 0 0" ItemsSource="{x:Static viewModels:SidebarContent.Items}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type models:SidebarItem}">
<RadioButton GroupName="Sidebar" Template="{StaticResource SidebarItem}" IsChecked="{Binding IsSelected}" Content="{Binding DisplayName}"></RadioButton>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
問題:
正確:

有人能告訴我為什么我在某些串列項上得到額外的行嗎?
uj5u.com熱心網友回復:
這些線條是渲染工件,您可以使用以下方法消除效果SnapToDevicePixels:
您可以
true在根元素上將此屬性設定為在整個 UI 中啟用像素捕捉渲染。對于以大于 96 點/英寸 (dpi) 的速度運行的設備,像素捕捉渲染可以最大限度地減少單個實線附近的抗鋸齒視覺偽影。
將此屬性設定為控制元件模板中true的父Border元素,它將應用于所有子元素,因為它是繼承的。
[...] 只有子樹中最外面的元素需要指定
SnapsToDevicePixels為true,然后該子樹的所有子元素都將報告SnapsToDevicePixels為 true 并具有SnapsToDevicePixels視覺效果。
<Border Background="#312b57" SnapsToDevicePixels="True">
<StackPanel Orientation="Vertical" Margin="25 0 0 0">
<Border Height="20" x:Name="TopContainer" >
<Border x:Name="Top" Background="#312B57" Padding="0"></Border>
</Border>
<Border x:Name="Middle" CornerRadius="10 0 0 10" Padding="15 8" Width="150" HorizontalAlignment="Right">
<TextBlock x:Name="TextBlock" Text="{TemplateBinding Content}"></TextBlock>
</Border>
<Border Height="20" x:Name="BottomContainer" Padding="0">
<Border x:Name="Bottom" Background="#312B57" Padding="0" ></Border>
</Border>
</StackPanel>
</Border>
或者,您可以將該UseLayoutRounding屬性設定為true(建議超過SnapToDevicePixels),但在這種情況下,它仍會在元素之間留下一條線。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329716.html
