WPF 페이지가 있습니다. 페이지에는 몇 가지 내용이 있지만 페이지의 루트 레이아웃의 마지막 하위 구성 요소는 내가 만든 사용자 정의 컨트롤입니다. 그것은 다음과 같다 : 기본적WPF : 트리거 속성 속성 내에서 다른 컨트롤을 참조하는 방법?
<UserControl DataContext=UserControlViewModel>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
<Grid
Name="grid"
Visibility="{Binding IsOn, Converter={StaticResource visibilityConverter}}">
<!-- Border to dim everything behind my user control -->
<Border Background="#000000" Opacity="0.4" />
<!-- The following border is red and holds the content -->
<Border
Width="{Binding ElementName=txt, Path=ActualWidth}"
Height="{Binding ElementName=txt, Path=ActualHeight}"
Margin="{Binding ElementName=txt, Path=Margin}"
HorizontalAlignment="{Binding ElementName=txt, Path=HorizontalAlignment}"
VerticalAlignment="{Binding ElementName=txt, Path=VerticalAlignment}"
Background="Red">
<TextBlock
Name="txt"
Width="200"
Height="100"
Margin="20"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="This is my super awesome message!" />
</Border>
</Grid>
</UserControl>
가 상기 UserControlViewModel
객체의 속성 IsOn
, false
으로 설정, 즉 사용자 제어가 보이지된다. 이 속성을 true
으로 변경하는 로직을 구현 한 다음 흐리게 표시되는 다른 모든 구성 요소 앞에 사용자 정의 컨트롤이 표시됩니다. 이것은 잘 작동합니다.
이제 사용자 정의 컨트롤 뒤에 표시되는 구성 요소를 흐리게 표시하는 페이드 효과 애니메이션을 만들려고합니다. 다음으로 왼쪽에서부터 페이드 인 할 내용을 담고있는 붉은 테두리를 만들고 싶습니다. 그래서 움직이기 + 퇴색합니다.
먼저 페이드 효과부터 시작해 보겠습니다.
<UserControl DataContext=UserControlViewModel>
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
<Grid
Name="grid"
Visibility="{Binding IsOn, Converter={StaticResource visibilityConverter}}">
<!-- Border to dim everything behind my user control -->
<Border Background="#000000" Opacity="0.4">
<!-- The following style is new code -->
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<Trigger Property="{Binding ElementName=grid, Visibility}" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.0"
To="0.4"
Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
...
을하지만 문제가있다 : 나는 배경 구성 요소의 디밍을하도록되어 그 Border
에이 스타일을 썼다는 종속성 속성이 아니기 때문에 내가 방아쇠 Property
구속력을 설정할 수 없습니다. grid
에 Visibility
속성이 Visible
으로 설정되면 트리거를 시작하는 방법이 필요합니다. 제발 도와주세요 고마워요!
두 번째 문제는 빨간색 테두리를 움직이는 방법을 모르므로 일부 규모 변환에 대한 도움이 필요합니다. 다시 한번 감사드립니다!
, 좋은! – Boris
처음 만 작동합니다! 왜!? – Boris
@myermian : 당신이 의미하는 바가 무엇인지 잘 모르겠습니다. 좀 더 문장으로 설명해 주시겠습니까? 감사. – Boris