Tôi có một trang WPF. Trang có một số nội dung, nhưng thành phần con cuối cùng của bố cục gốc của trang là điều khiển người dùng mà tôi đã tạo. Nó trông giống như thế này:WPF: Làm cách nào để tham khảo các điều khiển khác trong kích hoạt Thuộc tính tài sản?
<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>
Theo mặc định, IsOn
tài sản của đối tượng UserControlViewModel
được thiết lập để false
, ví dụ: người dùng điều khiển không nhìn thấy được. Tôi đã thực hiện một số logic thay đổi thuộc tính này thành true
và sau đó điều khiển người dùng được hiển thị trước tất cả các thành phần khác bị mờ đi. Điều này hoạt động tốt.
Bây giờ, tôi muốn tạo hoạt ảnh hiệu ứng mờ dần làm mờ các thành phần nằm sau điều khiển người dùng khi nó hiển thị. Tiếp theo, tôi muốn tạo đường viền màu đỏ chứa nội dung mờ dần từ phía bên trái, vì vậy hãy di chuyển + mờ dần.
Hãy bắt đầu với hiệu ứng mờ dần trước. Tôi viết theo phong cách này cho Border
đó là nghĩa vụ để làm mờ các thành phần nền:
<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>
...
Nhưng có vấn đề: Tôi không thể thiết lập các ràng buộc đối với cò Property
, bởi vì nó không phải là một tài sản phụ thuộc. Tôi cần một cách để kích hoạt trình kích hoạt của tôi kích hoạt khi grid
có thuộc tính Visibility
được đặt thành Visible
. Xin hãy giúp tôi và cảm ơn bạn!
Vấn đề thứ hai là, tôi không biết cách di chuyển đường viền màu đỏ, vì vậy tôi cần trợ giúp về một số biến đổi quy mô, tôi đoán ... Cảm ơn một lần nữa!
Nó hoạt động, tuyệt vời! – Boris
Nó chỉ hoạt động lần đầu tiên! TẠI SAO!? – Boris
@myermian: Tôi không hoàn toàn chắc chắn ý bạn là gì. Bạn có thể giải thích nó bằng một vài câu nữa không? Cảm ơn. – Boris