2011-11-14 8 views
1

CornerRadius 용 XAML의 ListView 스타일을 추가하고 싶습니다. 한 가지 방법이 있지만 내 경우에는 작동하지 않습니다. 이렇게하면됩니다.XAML에서 ListView CornerRadius를 추가하는 방법

    <ListView.Style> 
        <Style TargetType="{x:Type ListView}"> 
         <Setter Property="BorderBrush" Value="White"/> 
         <Setter Property="BorderThickness" Value="0"/> 
         <Setter Property="Margin" Value="0"/> 
         <Setter Property="OverridesDefaultStyle" Value="true"/> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="{x:Type ListView}"> 
            <Border CornerRadius="5"> 
            </Border> 
           </ControlTemplate> 
          </Setter.Value> 
         </Setter> 

         <!-- here we go --> 
         <Style.Resources> 
          <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Pink"/> 
          <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Pink"/> 
         </Style.Resources> 
        </Style> 

       </ListView.Style> 

이렇게하면 ItemsSource의 내 데이터가 표시되지 않으므로 내 Listview가 이렇게됩니다.

   <ListView x:Name="MenuBarList" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
       Height="{Binding MainMenuHeight}" 
       Width="{Binding MainMenuWidth}" 
       ItemsSource="{Binding}" 
         Foreground="White" 
       Background="#FF3D61D0" 
       SelectionMode="Single"> 

어떻게이 스타일을 추가 할 수 있습니까? 감사합니다 .. !!

답변

1

ListView에 항목을 표시 할 수 있도록 템플릿에 ItemsPresenter이 있어야합니다.

  <ControlTemplate TargetType="{x:Type ListView}"> 
       <Border Name="Bd" 
         CornerRadius="5" 
         Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         SnapsToDevicePixels="true"> 
        <ScrollViewer Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}" 
            Padding="{TemplateBinding Padding}"> 
         <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
        </ScrollViewer> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsGrouping" 
          Value="true"> 
         <Setter Property="ScrollViewer.CanContentScroll" 
           Value="false"/> 
        </Trigger> 
        <Trigger Property="IsEnabled" 
          Value="false"> 
         <Setter TargetName="Bd" 
           Property="Background" 
           Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
:

    ... 
        <Setter Property="Template"> 
         <Setter.Value> 
          <ControlTemplate TargetType="{x:Type ListView}"> 
           <Border CornerRadius="5"> 
            <ScrollViewer> 
             <ItemsPresenter /> 
            </ScrollViewer> 
           </Border> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
        ... 

더 쉬운 해결책은 default template의 사본을 편집하는 경우 : ItemsPresenter는 스크롤하기 위해 일반적으로 ScrollViewer 내부에

관련 문제