如何解决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>
默认情况下,“ 2”对象的“ 1”属性设置为“ 3”,即用户控件不可见。我已经实现了一些将此属性更改为to4ѭ的逻辑,然后将用户控件显示在所有其他变暗的组件前面。这很好。
现在,我想创建一个淡入淡出效果动画,一旦可见,它将使用户控件后面的组件变暗。接下来,我要使包含内容的红色边框从左侧淡入,以便移动+淡入。
让我们先从淡入淡出效果开始。我将这种样式写到了ѭ5,它应该对背景组件进行调光:
<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>
...
但是有一个问题:我无法在触发器Property
上设置绑定,因为它不是依赖项属性。当grid
将Visibility
属性设置为Visible
后,我需要一种方法来告诉触发器触发。请帮忙,谢谢!
第二个问题是,我不知道如何移动红色边框,所以我想在比例缩放方面也需要帮助,我想...再次感谢!
解决方法
尝试替换以下行:
原版的:
<Trigger Property=\"{Binding ElementName=grid,Visibility}\" Value=\"Visible\">
替代:
<DataTrigger Binding={Binding Visibility,ElementName=grid} Value=\"Visibile\">
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。