我有一个ListBox
在禁用时需要变灰的。根据用户请求,仅禁用它是不够的,但它也必须以不同的方式出现。耸耸肩 我在其他几个地方看过并遵循了这些例子,似乎它应该工作,但它没有。以下是我查看的一些示例:Example1,Example2。
这是我的代码:
<Style x:Key="ListBoxStyle" TargetType="ListBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBox}">
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="BorderBrush" Value="Black"></Setter>
<Setter Property="Foreground" Value="LightGray"></Setter>
<Setter Property="Background" Value="LightGray"></Setter>
<Setter Property="BorderBrush" Value="LightGray"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这似乎相当简单。我成功地完成了相同的基本ComboBox
过程TextBox
。谁能帮我看看我的代码哪里错了?如何正确地做到这一点的一个例子会很棒。上面列出的第一个示例似乎正是我所需要的,但正确的答案是“唯一的方法是覆盖模板”,这对我没有帮助。
我已经尝试了几种简单的解决方案。由于我们正在使用几个不同的资源字典,因此其他一些样式可能会影响这一点。有谁知道什么是追踪这个的好方法?
编辑: 我对整个解决方案进行了搜索,唯一使用 ListBox 的地方是我的部分,唯一设置样式的地方是我设置的样式。根据MSDN,ListBox 没有“部分”,因此在为其他控件设置样式的过程中,我不可能无意中设置了 ListBox 的一部分。没有样式,当我禁用 ListBox 时,它被冻结但没有文本可见,并且具有默认背景。当我尝试应用 Property="Background" Value="LightGray" 时,它似乎是隐藏的(即什么都不可见)。如果有人知道它为什么会这样做或如何完成我的任务,我将不胜感激。