Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DataTrigger RelativeSource WPF XAML_Wpf_Xaml - Fatal编程技术网

DataTrigger RelativeSource WPF XAML

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*

当鼠标在网格边界上移动时,Visibility属性值必须更改

我有一个3列定义的网格

代码是

<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>