2011-11-16 2 views
0

XAML 내부에 frameworkElements가 있으며 배경, 커서 등의 일부 속성을 정의합니다.UserControl의 XAML 속성을 다시로드 할 수 있습니까?

코드 숨김에서 이러한 속성을 변경하고 이벤트가 트리거되면 XAML에 정의 된 초기 속성을 다시로드하려고합니다. 이것이 가능합니까 아니면 코드에서 수동으로 리디렉션해야합니까?

감사합니다.

답변

0

XAML에서 정의 된 컨트롤은 본질적으로 인스턴스을 정의합니다. 인스턴스가이면 개체는 처리하는 다른 모든 개체와 같습니다. 코드 뒤에 XAML로 정의 된 인스턴스에 액세스하면 런타임에 코드 뒤에 새 개체를 만든 다음 해당 속성을 조정하는 것과 비슷합니다.

속성 값을 변경하려는 경우; 재산 변경을 되돌릴 수 없다면 원하는대로 변경할 수 있습니다.

0

일부 값을 기준으로 임시 변경을하는 경우는 DataTriggers을 참조하시기 바랍니다. 특정 조건이 참일 때 속성 값을 변경하고 조건이 거짓 일 때 원래 값으로 되돌립니다.

예를 들어,로드하는 동안 커서를 대기 커서로 변경하고 유효하지 않은 경우 백그라운드를 빨간색으로 변경하는 스타일이 있습니다. 물론

<Style TargetType="{x:Type local:MyUserControl}"> 
    <Setter Property="Cursor" Value="Arrow" /> 
    <Setter Property="Background" Value="White" /> 

    <Style.Triggers> 
     <DataTrigger Binding="{Binding IsLoading}" Value="True"> 
      <Setter Property="Cursor" Value="Wait" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding IsValid}" Value="True"> 
      <Setter Property="Background" Value="Red" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

, 당신은 당신의 UserControl을 뒤에 IsLoadingIsValid 속성을 정의해야하고, 코드 숨김 귀하의 해당 시간에 참/거짓로 설정합니다.

관련 문제