【发布时间】:2009-08-27 16:23:43
【问题描述】:
我对 WPF 组合框有一个非常奇怪的问题。在我们公司的一台计算机(并且只有一台)上,当 ComboBox 下拉菜单打开时,WPF ComboBox 拒绝响应鼠标事件。当用户单击 ComboBox 以显示下拉菜单并尝试选择一个项目时,他/她不会因为鼠标悬停而获得悬停效果。当用户点击一个项目时,下拉菜单关闭,但他们点击的项目永远不会被选中。似乎 ComboBox 的项目下拉列表没有响应任何鼠标事件。这只发生在整个公司的一台计算机上。其他人的程序都运行良好。
我已经尝试从 2.0 开始卸载并重新安装 .NET Framework。我尝试禁用在后台运行的所有内容。我仍然没有运气让它工作。我什至尝试过更换鼠标。我尝试的所有其他具有 ComboBox 的程序都可以正常工作,但 WPF 的。
这是组合框的代码:
<ComboBox Grid.Column="3"
ItemsSource="{Binding Configuration.Items}"
SelectedItem="{Binding Configuration.CurrentItem}"
Style="{StaticResource inputStyle}" />
<Style x:Key="inputStyle" TargetType="{x:Type Control}">
<Setter Property="Margin" Value="2" />
<Style.Triggers>
<Trigger Property="TextBoxBasee.IsReadOnly" Value="True">
<Setter Property="Background"
Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
</Triggers>
</Style.Triggers>
</Style>
有没有人知道发生了什么或如何解决它?
【问题讨论】:
-
所有机器肯定都在运行相同版本的框架,包括服务包? (检查任何 System.dll 上的次要版本。看不出这是问题,但值得消除。
-
是的。我也是这么想的。每个人都在运行 .NET 3.5 SP1。
-
这种风格让我有点困惑。由于 ComboBox 不是从 TextBoxBase 派生的,我很惊讶触发器会起作用。也许如果它以某种方式设置响应包含文本框的 ComboBox 模板。另外,您是否在代码中的某处设置了 IsReadOnly?
-
另外,TestBoxBasee 是错字吗?我以为只有 TextBoxBase。
-
是的,这是一个错字。我为所有输入控件使用该样式以给它们一个边距,如果它是 TextBoxBase,它将改变背景。如果它不是从 TextBoxBase(即 ComboBox)派生的,则该触发器将被忽略,并且 ComboBox 上的背景不会发生任何事情。
标签: wpf wpf-controls