2012-05-07 4 views
0

나는 다음과 같은 스타일을 사용하여 수직선과 WPF의 ListView에있어 (길이에 대한 미안하지만, 나는 그것을 포함해야한다고 생각)ListView에 컬러

이제
<SolidColorBrush x:Key="verticalLineColor" Color="Red" /> 
    <Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="{x:Type ScrollViewer}"> 
     <Setter Property="Focusable" Value="false"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ScrollViewer}"> 
        <Grid SnapsToDevicePixels="true" Background="{TemplateBinding Background}"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="*"/> 
          <RowDefinition Height="Auto"/> 
         </Grid.RowDefinitions> 
         <DockPanel Margin="{TemplateBinding Padding}"> 
          <ScrollViewer Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" DockPanel.Dock="Top"> 
           <GridViewHeaderRowPresenter x:Name="viewHeaderRowPresenter" 
             Margin="-2,0,-2,0" 
             Columns="{Binding Path=TemplatedParent.View.Columns, RelativeSource={RelativeSource TemplatedParent}}" 
             ColumnHeaderContainerStyle="{Binding Path=TemplatedParent.View.ColumnHeaderContainerStyle, RelativeSource={RelativeSource TemplatedParent}}" 
             ColumnHeaderTemplate="{Binding Path=TemplatedParent.View.ColumnHeaderTemplate, RelativeSource={RelativeSource TemplatedParent}}" 
             ColumnHeaderTemplateSelector="{Binding Path=TemplatedParent.View.ColumnHeaderTemplateSelector, RelativeSource={RelativeSource TemplatedParent}}" 
             AllowsColumnReorder="{Binding Path=TemplatedParent.View.AllowsColumnReorder, RelativeSource={RelativeSource TemplatedParent}}" 
             ColumnHeaderContextMenu="{Binding Path=TemplatedParent.View.ColumnHeaderContextMenu, RelativeSource={RelativeSource TemplatedParent}}" 
             ColumnHeaderToolTip="{Binding Path=TemplatedParent.View.ColumnHeaderToolTip, RelativeSource={RelativeSource TemplatedParent}}" 
             SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 


          </ScrollViewer> 

          <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" 
             SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"           
             ContentTemplate="{TemplateBinding ContentTemplate}" 
             KeyboardNavigation.DirectionalNavigation="Local" 
             CanContentScroll="{TemplateBinding CanContentScroll}"> 

           <ScrollContentPresenter.Content> 
            <Grid> 
             <!-- Container of vertical and horizontal lines --> 
             <ItemsControl Margin="-1,0,0,0" ItemsSource="{Binding Path=TemplatedParent.View.Columns, RelativeSource={RelativeSource TemplatedParent}}"> 
              <ItemsControl.ItemTemplate> 
               <DataTemplate> 
                <Border Width="{Binding Path=ActualWidth}" BorderThickness="0,0,.5,0" BorderBrush="{DynamicResource verticalLineColor}" Opacity="1" /> 
               </DataTemplate> 
              </ItemsControl.ItemTemplate> 
              <ItemsControl.ItemsPanel> 
               <ItemsPanelTemplate> 
                <StackPanel Orientation="Horizontal" /> 
               </ItemsPanelTemplate> 
              </ItemsControl.ItemsPanel> 
             </ItemsControl> 
             <ContentControl Content="{TemplateBinding Content}" /> 
            </Grid> 
           </ScrollContentPresenter.Content> 
          </ScrollContentPresenter> 
         </DockPanel> 
         <ScrollBar Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Cursor="Arrow" x:Name="PART_HorizontalScrollBar" Grid.Row="1" Maximum="{TemplateBinding ScrollableWidth}" Minimum="0.0" Value="{Binding Path=HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" Orientation="Horizontal" ViewportSize="{TemplateBinding ViewportWidth}"/> 
         <ScrollBar Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Cursor="Arrow" x:Name="PART_VerticalScrollBar" Grid.Column="1" Maximum="{TemplateBinding ScrollableHeight}" Minimum="0.0" Value="{Binding Path=VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" Orientation="Vertical" ViewportSize="{TemplateBinding ViewportHeight}"/> 
         <DockPanel Grid.Column="1" Grid.Row="1" Background="{Binding Path=Background, ElementName=PART_VerticalScrollBar}" LastChildFill="false"> 
          <Rectangle Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" Width="1" Fill="White" DockPanel.Dock="Left"/> 
          <Rectangle Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" Height="1" Fill="White" DockPanel.Dock="Top"/> 
         </DockPanel> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

, 모든 작품을 위대한 여기. 지금 실행중인 문제는 내 필드 중 하나가 0이면 ListView 행 중 하나를 음영 처리해야한다는 것입니다. 다음 코드를 사용하면 거기에 90 %가 표시됩니다.

이제, 내가 겪고있는 문제는 배경을 설정할 때 그리드 선을 "덮어 쓰는"것처럼 보입니다. enter image description here

세로선을 보이게 할 수있는 방법이 있습니까?

편집 # 1 : 좋아요, 조금만 놀아 본 후 이것이 작동하는지 궁금합니다. 다음 코드 섹션에서 : 어떻게 든 거기 Background 특성에 연결할 수있는 경우

<DataTemplate> 
    <Border Width="{Binding Path=ActualWidth}" BorderThickness="0,0,.5,0" BorderBrush="{DynamicResource verticalLineColor}" /> 
</DataTemplate> 

, 나는이 작업을 얻을 수 있어야합니다. 아무도 여기 바인딩에 올바른 방향으로 나를 가리킬 수 있습니까? 바인드해야 할 필드는 ListView의 ItemSource에있는 QtyInBox입니다.

편집 # 2 : 내가 틀렸던 것처럼 보입니다. 그 모든 열을 묶는 것 같습니다. 그래서 나는 그저 한 줄의 배경을 설정할 수는 없다. 드로잉 보드로 돌아 가기 ...

+0

회선이 배경과 같은 색임을 알 수 있습니까? 다른 색을 사용하면 어떻게됩니까? –

+0

예. 나는 단지 그것을 알아 차렸다. 미묘한 차이 (LightGray vs Gray). 나는 그것을 더 명백하게하기 위해 빨간색으로 바꿀 것입니다. –

+0

그냥 보면 당신이 설정 한 네거티브 좌우측 마진 때문에 문제가 발생할 수 있다고 생각합니다. 'ItemContainerStyle'에서'Margin'을 * 0 * (또는 * "0, -1,0, -1"*)로 설정하여 도움이되는지보십시오. –

답변

0

불행히도, 나는 이것에 대한 진정한 해결책을 알 수 없었습니다.

내가 할 수있는 최선의 방법은 배경의 투명도를 .6 또는 .7과 같이 설정하는 것이 었습니다.

완벽한 솔루션이 아니 었습니다. 텍스트가 약간 희미 해졌지만 지금은 충분했습니다.