【问题标题】:WPF EventTriggers - Cannot convert string 'MouseEnter' in attribute 'RoutedEvent' to object of type 'System.Windows.RoutedEvent'WPF EventTriggers - 无法将属性“RoutedEvent”中的字符串“MouseEnter”转换为“System.Windows.RoutedEvent”类型的对象
【发布时间】:2009-03-10 13:44:39
【问题描述】:

我无法让任何事件触发器工作。下面是我正在做的一个简化示例 -

<Window x:Name="win" x:Class="EventTriggers.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Window.Resources>
    <ControlTemplate x:Key="buttonT">
        <Border Background="#333">
            <TextBlock Text="{Binding}" HorizontalAlignment="Stretch" Foreground="White"/>
            <Border.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">

                </EventTrigger>
            </Border.Triggers>
        </Border>
    </ControlTemplate>

    <DataTemplate x:Key="lbt">
        <Button Template="{StaticResource buttonT}" Click="Button_Click"></Button>
    </DataTemplate>

</Window.Resources>
<ListBox ItemsSource="{Binding ElementName=win,Path=col}" ItemTemplate="{StaticResource lbt}">
</ListBox>

我知道 Border 上有一个 MouseEnter 事件,因为它是在 UIElement 中定义的,但我仍然收到

无法将字符串“MouseEnter”转换为 将“RoutedEvent”属性赋予对象 输入“System.Windows.RoutedEvent”

只要我运行应用程序。

任何帮助将不胜感激。

【问题讨论】:

    标签: wpf eventtrigger


    【解决方案1】:

    您还必须提供类型,所以:

    <EventTrigger RoutedEvent="Mouse.MouseEnter"></EventTrigger>
    

    【讨论】:

    • 我听说使用'.' (句点)在用于绑定的 xaml 字符串中会导致内存泄漏。是否有另一种使用 MouseEnter 事件触发器的方法?
    • 我没有听说过这样的事情。老实说,这听起来有点荒谬。你在哪里读到的?
    【解决方案2】:

    完全限定事件名称:

    <EventTrigger RoutedEvent="Border.MouseEnter">
    
    </EventTrigger>
    

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 1970-01-01
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多