2010-06-07 8 views
2

저는 최근에 Windows Phone 용 Visual Studio 2010 Express를 사용하여 개발을 시작했으며 ListBox에 넣었습니다. 형식을 조작 할 수없는 것 같습니다. 내가 무엇을해도 배경은 검은 색/회색이고 선택된 항목은 파란색 테두리가 있고 목록 상자의 항목 사이에는 패딩이 있습니다 (나는 이미지를 사용하고 있습니다). 여기 내 코드는 다음과 같습니다Windows Phone 7 ListBox를 사용자 정의 할 수 없습니까?

XAML :

<Grid x:Name="ContentGrid" Grid.Row="1"> 
    <Grid Name="gallery"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="370" /> 
      <RowDefinition Height="150" /> 
     </Grid.RowDefinitions> 
     <Border BorderBrush="Red" Width="450" CornerRadius="4" BorderThickness="2" 
      Background="Red" Margin="10,30,20,10" Padding="6,6,6,6"> 
      <Image Grid.Row="0" Grid.Column="0" Height="360" x:Name="imgPreview"/> 
     </Border> 
     <ListBox x:Name="lbScrollGallery" Grid.Row="1" Grid.Column="0" Padding="0" 
       VerticalAlignment="Top" Width="450" SelectionChanged="ScrollerSelectionChanged" 
       d:LayoutOverrides="HorizontalAlignment" ScrollViewer.HorizontalScrollBarVisibility="Hidden"> 
      <ListBox.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal"/> 
       </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <Image Width="100" Height="100" Stretch="Fill" Name="imgSource" 
         VerticalAlignment="Center" 
         Source="{Binding Path=Url}" /> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</Grid> 

내가 목록 상자를 사용자 지정할 수있는 몇 가지 방법이 있나요? 배경을 빨간색으로 변경하거나 다른 항목 사이에 여백을 0으로 만드시겠습니까?

+0

자신 만의 스타일을 구현하는 등 사용자가 제안한 것처럼 바탕 화면의 Silverlight 에서처럼 목록 상자 기본 스타일을 재정의 할 수 있어야합니다. 사용자 정의 컨트롤을 만들 때 기억해야 할 터치 대상에 해당 패딩이 있음을 기억하십시오 , 또는 기존의 것을 커스터마이징하는 것 - 그러나 이미지는 내가 생각하기에 충분히 큰 표적이 될 것이다. – RoguePlanetoid

답변

7

다음은 몇 가지 디스플레이 속성 설정을 보여주는 데모 xaml입니다.

<ListBox Height="640" HorizontalAlignment="Left" Margin="6,6,0,0" Name="listBox1" VerticalAlignment="Top" Width="468"> 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Padding" Value="-12" /> 
       <Setter Property="Background" Value="White"/> 
       <Setter Property="Foreground" Value="Black"/> 
      </Style> 

     </ListBox.ItemContainerStyle> 
    </ListBox> 

inbuilt 형식은 값을 -12로 처리 할 수있는 일부 패딩을 적용합니다. 또한 에릭 플렉 (Eric Fleck)의 게시물 here에서 메트로 스타일링 결과 일 수 있음을 이해합니다. 이 게시물은 단추 컨트롤에서이 서식을 모두 무시하는 방법의 예를 제공합니다. 이것은 고려 가치가있는 접근 일 수 있습니다.

+0

나무 덕분에 효과가있었습니다. – EverTheLearner

+0

일반적으로 Metro 스타일 가이드 라인을 우회하는 것은 응용 프로그램간에 일관된 UX를 유지하는 데 도움이되므로 권장하지 않습니다. 여분의 방이있는 타겟을 치면 내 손가락처럼 뚱뚱한 손가락에 도움이됩니다 ... –

1

Silverlight (및 WPF)에서 템플릿 및 스타일에 대해 먼저 at this MSDN article을 봐야합니다. 모든 컨트롤은 사용자 정의 할 수 있으며 여기에 TemplateItemsContainerStyle을 제공하십시오.