WPFtrigger的主要类型有:Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种。 MultiDataTrigger.Setters> </MultiDataTrigger> <DataTrigger TargetName="menu_addChild" Property="Visibility" Value="Visible"/> </DataTrigger > <DataTrigger Binding="{Binding IsDir}" Value="False"> TargetName="menu_addChild" Property="Visibility" Value="Collapsed"/> </DataTrigger
前言 触发器用五种 Triggers MultiTriggers EventTrigger DataTrigger MultiDataTrigger Triggers 根据组件属性的值变化触发 <Style.Triggers <Image.Style> <Style TargetType="Image"> <Style.Triggers> <DataTrigger <Setter Property="Source" Value="Images/ToolBar/toobar_0.png"/> </DataTrigger > <DataTrigger Binding="{Binding IsRight}" Value="false"> <Setter Property="Source" Value="Images/ToolBar/toobar_8.png"/> </DataTrigger> <
List<string> { "请输入名称" }); IsNameHasFocus = true; } } 在 XAML 中定义一个 StackPanel 的样式并为它添加 DataTrigger Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=NameTextBox}"/> </DataTrigger Style TargetType="TextBox" BasedOn="{StaticResource {x:Type Control}}"> <Style.Triggers> <DataTrigger FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource Mode=Self}}"/> </DataTrigger nameof(Name), new List<string> { "请输入名称" }); } 这个全局 Style 让所有 TextBox 都添加一个绑定到 Validation.HasError 的 DataTrigger
Value="True"> <Setter Property="Visibility" Value="Visible"/> </DataTrigger > <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType IsSelected}"> <Setter Property="Visibility" Value="Hidden" /> </DataTrigger I notice that DataTrigger.Value property is missing in UserContrl's Style. <Style TargetType="{x:Type UserControl}"> <Style.Triggers> <DataTrigger Binding="{Binding
Property="Height" Value="25" /> <Style.Triggers> <DataTrigger <Setter Property="Height" Value="205" /> </DataTrigger
Grid.Row" Value="0" /> <Setter Property="Grid.Column" Value="0" /> <Style.Triggers> <DataTrigger Property="Grid.Row" Value="1" /> <Setter Property="Grid.Column" Value="1" /> </DataTrigger 如果你写的是 DataTemplate,也一样是使用 DataTrigger 绑定。 你也可以不绑定到窗口上,而绑定到控件本身上,使用 TemplatedParent 作为绑定的源即可。 /> <Rectangle x:Name="Mask" Fill="Red" /> </Grid> <DataTemplate.Triggers> <DataTrigger Value="3" /> <Setter TargetName="Mask" Property="Visibility" Value="Collapsed" /> </DataTrigger
Grid.Row" Value="0" /> <Setter Property="Grid.Column" Value="0" /> <Style.Triggers> <DataTrigger Property="Grid.Row" Value="1" /> <Setter Property="Grid.Column" Value="1" /> </DataTrigger 如果你写的是 DataTemplate,也一样是使用 DataTrigger 绑定。 你也可以不绑定到窗口上,而绑定到控件本身上,使用 TemplatedParent 作为绑定的源即可。 /> <Rectangle x:Name="Mask" Fill="Red" /> </Grid> <DataTemplate.Triggers> <DataTrigger Value="3" /> <Setter TargetName="Mask" Property="Visibility" Value="Collapsed" /> </DataTrigger
用 DataTrigger 实现不同的指针 上面的表盘还是做得太朴素了,我们可以用 DataTrigger 让它变得更复杂些。首先改变 ItemsSource 的内容,让它变成 60 个指针。 复制粘贴几次就有了: <ContentControl Content="100001000010000100001000010000100001000010000100001000010000"> 然后设置 DataTrigger 10" Height="2" Fill="#383838" /> <DataTemplate.Triggers> <DataTrigger Value="16" /> <Setter TargetName="Tick" Property="Margin" Value="0,0,3,0" /> </DataTrigger
</DockPanel> <ControlTemplate.Triggers> <DataTrigger RelativeSource={x:Static RelativeSource.TemplatedParent}}"></Setter> </DataTrigger > <DataTrigger Binding="{Binding BackImage,RelativeSource={x:Static RelativeSource.Self 而在模板的数据事件DataTrigger中,绑定依赖属性的模式却是分两种的。 第一种,绑定数据事件DataTrigger的条件时,使用RelativeSource.Self,如{Binding IsMouseOver,RelativeSource={x:Static RelativeSource.Self
<ScaleTransform ScaleX="1"/> </Setter.Value> </Setter> <Style.Triggers> <DataTrigger <ScaleTransform ScaleX="-1"/> </Setter.Value> </Setter> </DataTrigger <ScaleTransform ScaleX="1"/> </Setter.Value> </Setter> <Style.Triggers> <DataTrigger <ScaleTransform ScaleX="-1"/> </Setter.Value> </Setter> </DataTrigger <ScaleTransform ScaleX="1"/> </Setter.Value> </Setter> <Style.Triggers> <DataTrigger
然后在ControlTemplate.Triggers里添加两个DataTrigger,根据所属的ListBox的IsMultiSelectCheckBoxEnabled和SelectionMode显示或隐藏 SelectionCheckMark: <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType Property="Visibility" TargetName="SelectionCheckMark" Value="Collapsed" /> </DataTrigger > <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListBox 最后再DataGrid的Style的Triggers中添加两个DataTrigger: <Trigger Property="SelectionMode" Value="Single"> <Setter
Property="Visibility" Value="Collapsed"/> <Style.Triggers> <DataTrigger <Setter Property="Visibility" Value="Visible"/> </DataTrigger Property="Visibility" Value="Collapsed"/> <Style.Triggers> <DataTrigger <Setter Property="Visibility" Value="Visible"/> </DataTrigger
Property="Visibility" Value="Collapsed"/> <Style.Triggers> <DataTrigger <Setter Property="Visibility" Value="Visible"/> </DataTrigger Property="Visibility" Value="Collapsed"/> <Style.Triggers> <DataTrigger <Setter Property="Visibility" Value="Visible"/> </DataTrigger
</WrapPanel> <DataTemplate.Triggers> <DataTrigger Value=".txt"> <DataTrigger.Binding> <Binding </Binding.Converter> </Binding> </DataTrigger.Binding <Setter TargetName="btnShow" Property="Content" Value="Show"/> </DataTrigger
ControlTemplate.Resources> <Style TargetType="TextBlock"> <Style.Triggers> <DataTrigger <Setter Property="TextDecorations" Value="Underline" /> </DataTrigger Property="TextDecorations" Value="Underline" /> </DataTrigger 在ControlTemplate.Resources中添加了一个TextBlock的全局样式,里面的DataTrigger设置为当鼠标进入父节点的HyperlinkButton时TextDecorations 在下面的ContentPresenter.Resources中也添加了同样的DataTrigger,这是为了应对下面这种情况: <kino:HyperlinkButton Content="Microsoft
在WPF中,触发器可以分为以下几类:基本触发器(Trigger);事件触发器(EventTrigger);数据触发器(DataTrigger);多条件触发器(MultiTrigger,MultiDataTrigger 3数据触发器(DataTrigger) 请看如下代码: 我们还是以修改Slider背景色为例子,数据触发器使用Binding来设置要监视的对象,其结果跟示例1一致,此处不再展示,除了绑定一个数据
> <Style> <Style.Triggers> <DataTrigger RelativeSource={RelativeSource PreviousData}}"> </DataTrigger
Collapsed" /> <Style.Triggers> <DataTrigger <Setter Property="Visibility" Value="Visible" /> </DataTrigger
别急,我们先来看看整个用户控件的界面布局: 可以看到,界面上就只有一个 Control 元素,给它设置了一个样式,将在该样式中使用 DataTrigger(数据触发器)来切换不同的控件模板,从而改变布局 默认是输入框在圆圈右边的布局,其余的 左、上、下 则是通过数据触发器 DataTrigger 来实现的,数据触发器绑定 UserControl 的 TextBoxPlacement 属性(前面我们添加的那个
"ItemsHost" Value="Collapsed"/> </Trigger> <DataTrigger <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/> </DataTrigger </Grid> <HierarchicalDataTemplate.Triggers> <DataTrigger <Setter TargetName="c1" Property="Width" Value="13"/> </DataTrigger