2015-08-20 22 views
6

tôi có thể không cho cuộc sống của tôi con số này ra, bằng cách sử dụng mẫu kiểm soát cùng tôi nhận được một adorner mờ trên một phần tử trong bảng của tôi:mờ adorner WPF XAML

enter image description here

Mẫu điều khiển:

<ControlTemplate x:Key="validationErrorTemplateBubble" > 
<DockPanel > 
    <Grid DockPanel.Dock="Bottom" Margin="10,0,0,0" > 
     <Grid.Effect> 
      <DropShadowEffect ShadowDepth="2" Direction="315" /> 
     </Grid.Effect> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 

     <Border Grid.Row="1" BorderBrush="Gray" BorderThickness="1" CornerRadius="5" Margin="0,-1.6,0,0"> 
      <Border.Background> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="#FFE7E8F1" Offset="1"/> 
        <GradientStop Color="White"/> 
        <GradientStop Color="#FFF3F4F6" Offset="0.472"/> 
       </LinearGradientBrush> 
      </Border.Background> 

      <Grid> 
       <WrapPanel VerticalAlignment="Center" Margin="5,5,10,5"> 
        <Image Source="/Sesam;component/Modules/Images/wrongsmall.png" Height="15" Width="15" /> 
        <TextBlock Foreground="Red" FontSize="12" Margin="5,0,0,0" Text="{Binding ElementName=ErrorAdorner, Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent}" /> 
       </WrapPanel> 
       <ContentPresenter Margin="5" Grid.Column="1" Grid.Row="1"/> 
      </Grid> 
     </Border> 
     <Path Data="M306.375,133.125L306.375,100.875L335.75,133.25" Stroke="Gray" Height="15" Fill="White" StrokeThickness="1" Stretch="Uniform" Margin="10,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center"/> 
    </Grid> 
    <AdornedElementPlaceholder x:Name="ErrorAdorner" /> 
</DockPanel> 

Non-blury Text Box Mã:

<TextBox BorderThickness="0" VerticalAlignment="Center" Width="150" Padding="3" Margin="8,0,0,0" Foreground="{StaticResource myDarkBlue}" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListView}}, Path=DataContext.encTypeValidation, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{StaticResource validationErrorTemplateBubble}" HorizontalAlignment="Left" > 
<TextBox.Style> 
    <Style TargetType="{x:Type TextBox}"> 
     <Setter Property="Visibility" Value="Collapsed" /> 
     <Style.Triggers> 
      <MultiDataTrigger> 
       <MultiDataTrigger.Conditions> 
        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" Value="True" /> 
        <Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListView}}, Path=DataContext.editClicked}" Value="True" /> 
       </MultiDataTrigger.Conditions> 
       <Setter Property="Visibility" Value="Visible" /> 
      </MultiDataTrigger> 
     </Style.Triggers> 
    </Style> 
</TextBox.Style> 

mờ TextBox Mã số:

<Grid> 
    <WrapPanel> 
     <TextBox x:Name="tbox" Text="{Binding encTypeValidation, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}" Foreground="{StaticResource myTextBoxColor}" Validation.ErrorTemplate="{StaticResource validationErrorTemplateBubble}" PreviewMouseDown="tbox_PreviewMouseDown" Width="200" > 
      <TextBox.InputBindings> 
       <MouseBinding Gesture="LeftClick" Command="{Binding addBoxClicked}" /> 
      </TextBox.InputBindings> 
     </TextBox> 
    </WrapPanel> 
</Grid> 

Something về cách nó ám, là người đầu tiên (không blury) nằm trong một "ListViewItem" Control Template, người kia là một UserControl ..

Bất kỳ ý tưởng nào?

FIXED

Cố định bằng cách thêm UseLayoutRounding = "True" vào Control nghĩa là cha mẹ: ContentControl!

Cảm ơn bạn Aybe!

 <Grid Grid.Row="2" Background="{StaticResource myLightGrey}" > 
     <Border BorderBrush="{StaticResource myLightGrey}" BorderThickness="0,1,1,0"> 
      <ContentControl x:Name="AddPanel" VerticalAlignment="Center" HorizontalAlignment="Center" UseLayoutRounding="True"/> 
     </Border> 
    </Grid> 

Fixed

+0

Dùng thử UseLayoutRounding và SnapToDevicePixels. – Aybe

+0

Bumping đại diện của bạn để bạn có thể làm ảnh chụp màn hình nội tuyến trong tương lai. Chúc may mắn. – Bobby

+0

@Aybe đã thử SnapToDevicePixels trên hầu hết tất cả các yếu tố trước khi đăng, nghĩ rằng nó có liên quan gì đó, sẽ thử UseLayoutRounding (mặc dù tôi nghĩ tôi đã thử) yếu tố nào bạn sẽ áp dụng nó? Trong Adorner ControleTemplate tôi giả sử .. –

Trả lời

1

Thêm UseLayoutRounding = "True" để kiểm soát thùng phụ huynh giải quyết vấn đề rendering.

Các vấn đề liên quan