2010-06-29 5 views
0

간단한 맞춤 패널을 만들어 비즈니스 양식 패션으로 어린이를 배치하고 싶습니다. 이상적으로는 다음과 같이 내 마크 업을하고 싶습니다 :대체 배경이있는 맞춤 패널

<Panels:FormPanel> 
     <TextBlock Text="Name:"/> 
     <TextBox /> 
     <TextBlock Text="Address"/> 
     <TextBlock Text="Unknown"/> 
     <TextBlock Text="City"/> 
     <TextBox HorizontalAlignment="Stretch"/> 
     <TextBlock Text="State"/> 
     <ComboBox/> 
     <TextBlock Text="Country"/> 
     <StackPanel>...</StackPanel> 
</Panels:FormPanel> 

패널은 오른쪽에 왼쪽과 값에 두 개의 열 라벨에 컨트롤을 레이아웃합니다. 내 컨트롤을 배치하는 데 아무런 문제가 없습니다. 문제는 더 쉽게 읽을 수 있도록 스트라이프를 만들기 위해 행의 배경을 교체해야한다는 것입니다. 아이디어가 어떻게 될 수 있습니까?

답변

0

이 질문에 직접 대답하지는 않지만 근본적인 문제에 대한 다른 해결책으로 간주 할 수 있습니다.

http://wpg.codeplex.com/을 살펴보십시오. 내 비즈니스 개체의 사용자 지정 특성을 이해하도록 수정 된 Windows Forms에서 비슷한 속성 격자 모양의 컨트롤을 사용했습니다.

이제 WPF에서 MVVM 패턴을 따르고 ViewModel에 속성 격자가 이해할 수있는 속성을 사용하면 비슷한 기능이 제대로 작동한다고 생각합니다. 그런 다음 위에 표시된 것처럼 필드를 명시 적으로 정의 할 필요가 없습니다.

당신은 뷰 모델 수 :

class PersonViewModel 
{ 
    [DisplayName("Name")] // The property Grid uses this the Textblock text 
    [IsRequired] // The property grid could do validation on the field 
    [Visible] 
    public string Name { get; set; } 

    public long InvisibleSystemField { get; set; } // Not shown 
} 

을 그리고 당신은이 같은 뷰 (XAML 파일)이 것 :

<myCommon:PropertyGrid DataContext={Binding}/> 

그것은 단순히위한 출발점으로 DataContext에있어 사용할 수를 반사. OK

나는 WPF 전원 LOB 응용 프로그램에서 일하고 있어요

나는 :) 지금이 중단됩니다 나는 아마도 미래에 이런 식으로 뭔가를 만들 수 있습니다.

0

맞춤 패널을 구현하는 것이 실제로 그렇게 어렵지는 않습니다. 측정 및 정렬이라는 두 가지 메서드를 재정의해야합니다. Google은 "wpf custom panel"에 대한 기사를 얻으려고합니다.

정확하게 Windows.Controls.Grid 확장 질문에 필요한대로 동작을 얻으려면 어떻게 제안 할 것이라고. 그러면 사용자 지정 그리드에는 생성자에서 초기화하는 두 개의 열이 기본적으로 있고 자식 컨트롤에 Grid.Column 및 Grid.Row 속성을 프로그래밍 방식으로 설정할 수 있습니다.

또한 주목할만한 가치가 ItemsControl이 될 수 있습니다. 색깔이 다른 행을 지원합니다.

<Grid> 
    <Grid.Resources> 
    <Style x:Key="alternatingWithTriggers" TargetType="{x:Type ListBoxItem}"> 
     <Setter Property="Background" Value="Blue"/> 
     <Setter Property="Foreground" Value="White"/> 
     <Style.Triggers> 
     <Trigger Property="ListBox.AlternationIndex" Value="1"> 
      <Setter Property="Background" Value="CornflowerBlue"/> 
      <Setter Property="Foreground" Value="Black"/> 
     </Trigger> 
     <Trigger Property="ListBox.AlternationIndex" Value="2"> 
      <Setter Property="Background" Value="LightBlue"/> 
      <Setter Property="Foreground" Value="Navy"/> 
     </Trigger> 
     </Style.Triggers> 
    </Style> 

    </Grid.Resources> 
    <ListBox AlternationCount="3" ItemsSource="{StaticResource data}" 
      ItemContainerStyle="{StaticResource alternatingWithTriggers}"> 
    </ListBox> 
</Grid> 

그런 다음 레이블과 텍스트 상자,하지만 일이를 점점 가로장 설치 등등이 될 수를 포함하는 항목에 대한 템플릿을 지정할 수 있습니다 :이 예 (from MSDN는) 그것을 사용하는 방법을 보여줍니다.

XAML Powertoys 당신이 ViewModels에서 비즈니스 양식을 생성 할 수있는 기능, 모델에서 ViewModels 등을 포함

는 여기에 내가 제안 것이다 일 최종 일입니다. 그래도 행 색상을 번갈아 가며 소스를 수정해야 할 수도 있습니다.

행운을 빈다.

관련 문제