DataTrigger RelativeSource WPF XAML
当鼠标在网格边界上移动时,Visibility属性值必须更改 我有一个3列定义的网格 代码是DataTrigger RelativeSource WPF XAML,wpf,xaml,Wpf,Xaml,当鼠标在网格边界上移动时,Visibility属性值必须更改 我有一个3列定义的网格 代码是 <Grid x:Name="grid1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="5*"/> <ColumnDefinition Width="27*"/> <ColumnDefinition Width="93*
<Grid x:Name="grid1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="27*"/>
<ColumnDefinition Width="93*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Blue" Visibility="Hidden">
<Border.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver , RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}}" Value="True">
<Setter Property="Border.Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
<Image Grid.Column="1" />
<TextBlock Grid.Column="2" />
</Grid>
当鼠标悬停在网格上时,不会发生任何事情。因此,此代码不起作用一件事是,当需要鼠标悬停时,不应在DataTrigger中使用
IsReadOnly
属性
另一个问题是,本地值Visibility=“Hidden”
的优先级高于DataTrigger setter
,即使条件为真,也不会更改
两者的修复(可见性的初始值在setter中定义)
您还应该将网格背景设置为非空值(例如,
),以便在网格中注册鼠标移动()一件事是,当需要鼠标移动时,您不应该在DataTrigger中使用IsReadOnly
属性
另一个问题是,本地值Visibility=“Hidden”
的优先级高于DataTrigger setter
,即使条件为真,也不会更改
两者的修复(可见性的初始值在setter中定义)
您还应该将网格背景设置为非空值(例如,
),以便在网格中注册鼠标移动()您的DataTrigger使用IsReadOnly
作为属性。那么您期望什么呢?如果默认的Grid
具有IsReadOnly
属性,您必须使用未来的.NET framework。@Clemens抱歉,我没有看到它(我复制了此解决方案),现在我改为IsMouseOver,但不再工作。您的数据触发器使用IsReadOnly
作为属性。那么您期望什么呢?如果默认的Grid
具有IsReadOnly
属性,您必须使用未来的.NET framework。@Clemens抱歉,我没有看到它(我复制了此解决方案)现在,当我再次在网格中将绑定更改为IsPressed或IsFocused时,我更改为IsMouseOver但不再工作。这不起作用。grid.IsFocused=false
并且没有更改,这就是为什么边框可见。这是工作,但不是你所期望的。网格没有IsPressed
属性,如何使用它?当我再次在网格中将绑定更改为IsPressed或IsFocused时。这不起作用。Grid.IsFocused=false
并且没有更改,这就是为什么边框可见。这是工作,但不是你所期望的。网格没有IsPressed
属性,如何使用它?
<Border Grid.Column="0" Background="Blue">
<Border.Style>
<Style>
<Setter Property="Border.Visibility" Value="Hidden" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Grid}}}" Value="False">
<Setter Property="Border.Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>