2011-08-22 4 views
2

텍스트 상자 표시 속성 (예 : 보더, 모서리 반경 등)을 사용자 정의하고 데이터에 입력 할 데이터 트리거를 구현하는 방법은 무엇입니까? . 또는 방법 ... 모양과 느낌과 한 번에 XAML을 통해 동일한 제어를위한 datatriggers을 구현 (목록 상자 등, 말 텍스트 상자) 컨트롤의 사용자 지정하는WPF, C# - 텍스트 표시 속성을 사용자 정의하고 데이터 트리거를 구현합니다.

사람은 .. 예를 들어 나를 도울 수

감사합니다. Sekhar.

답변

1

여러 가지 옵션이 있습니다. 컨트롤의 시각적 요소를 완전히 사용자 지정하려면 컨트롤 스타일과 템플릿을 재정의 할 수 있습니다. 예 : http://msdn.microsoft.com/en-us/library/aa970773(v=VS.100).aspx.

일부 값은 개체의 스타일 사용 false 인 경우는 빨간색 테두리로 쉽게 UI 변경을 수행 할 경우

<Style TargetType="{x:Type TextBox}"> 
    <Setter Property="TextElement.FontFamily" Value="Calibri" /> 
    <Setter Property="TextElement.FontSize" Value="14" /> 
    <Setter Property="TextElement.Foreground" Value="Black" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Path=IsValid}" Value="False"> 
      <Setter Property="Effect"> 
       <Setter.Value> 
        <DropShadowEffect BlurRadius="5" Color="Red" ShadowDepth="0" /> 
       </Setter.Value> 
      </Setter> 
      <Setter Property="ToolTip" Value="Something is invalid." /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Path=IsValid}" Value="True"> 
      <Setter Property="Effect" Value="{x:Null}" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

을 위 DataTrigger를 사용하여 오류 템플릿을 사용할 수 모방 일이다 . 기본적으로 뷰 모델의 부울 값에 바인딩됩니다.이 부울은 부울 값이 false 인 경우 텍스트 테두리 주위에 빨간색 테두리를 그리고 부울 값이 true 인 경우이를 지 웁니다.

2

우선 "표시 속성"은 보통 WPF에서 ControlTemplate이라고합니다. 물론 TextBox 또는 다른 컨트롤의 전체 ControlTemplate을 변경하고 원하는대로 수정할 수 있습니다. 예를 들어 Button의 ControlTemplate을 변경하여 직사각형을 표시 할 수 있습니다.

<ControlTemplate x:Key="myNewButton" TargetType="{x:Type Button}"> 
    <Rectangle Fill="{TemplateBinding Background}"/> 
</ControlTemplate> 


<Button Template="{StaticResource myNewButton}"/> 

TemplateBinding 태그는 ControlTemplate 아이들에게이 경우 Background에, 종속성 속성을 전달하는 방법입니다.

이제이 데이터를 추가하려는 경우가 ControlTemplate 자체

<ControlTemplate x:Key="myNewButton" TargetType="{x:Type Button}"> 
    <Rectangle x:Name="rect" Fill="{TemplateBinding Background}"/> 

    <ControlTemplate.Triggers> 
     <DataTrigger Binding="{Binding MyDataProperty}" Value="True"> 
      <Setter TargetElement="rect" Property="Fill" Value="Green" /> 
     </DataTrigger 
    </ControlTemplate.Triggers> 

</ControlTemplate> 
+0

에 대한 ... 한 번에 제어를위한 모두의 ControlTemplate 및 datatriggers을 구현 무엇을 찾고 있다는 것을 할 수있는 트리거 .. –

관련 문제