我正在尝试将样式应用于组合框,但组合框本身并没有应用,而是消失了。请检查以下用于用户控制的 xaml 代码。
<用户控制
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Microsoft_Windows_Themes =“clr命名空间:Microsoft.Windows.Themes;程序集=PresentationFramework.Luna”
x:Class="Guardian.PAS.PASFramework.UI.WPF.PASComboBox"
xmlns:local="clr-命名空间:Guardian.PAS.PASFramework.UI.WPF"
高度=26 宽度=100 垂直对齐=中心>
<用户控件.资源>
<Style x:Key="comboBoxStyle" TargetType="{x:Type local:PASCustomComboBox}">
<设置属性=“模板”>
<设置器.值>
<ControlTemplate TargetType="{x:Type local:PASCustomComboBox}">
<控制模板.触发器>
<触发器属性=“本地:PASCustomComboBox.IsEnabled”值=“假”>
<Setter属性=“背景”值=“红色”/>
</触发器>
</ControlTemplate.触发器>
</控制模板>
</Setter.Value>
</设置>
</风格>
</用户控件.资源>
<画布名称=“画布”高度=“23”宽度=“自动”垂直对齐=“居中”>
<标签高度=“23”名称=“lblCaption”宽度=“20”垂直对齐=“中心”>aaa</标签>
<本地:PASCustomComboBox高度=“23”x:名称=“cmbComboBoxControl”VerticalAlignment=“中心”宽度=“50”
IsEditable="True" Style="{StaticResourcecomboBoxStyle}">
</本地:PASCustomComboBox>
<按钮高度=“23”名称=“btnSearch”宽度=“25”点击=“btnSearch_Click”可见性=“折叠”
VerticalAlignment="中心">...</按钮>
<标签高度=“23”名称=“lblDescription”垂直对齐=“中心”宽度=“20”前景=“蓝色”>
</标签>
</画布>
</用户控制>
这里 PASCustomComboBox 是一个继承自组合框的类。
public class PASCustomComboBox : ComboBox
{
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if (e.Key == Key.Down || e.Key == Key.Up)
{
e.Handled = true;
return;
}
base.OnPreviewKeyDown(e);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是您正在重新定义 ControlTemplate,其中没有任何可视化树:
<Style x:Key="comboBoxStyle" TargetType="{x:Type local:PASCustomComboBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:PASCustomComboBox}">
<ControlTemplate.Triggers>
<Trigger Property="local:PASCustomComboBox.IsEnabled" Value="false">
<Setter Property="Background" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)
您需要样式上的触发器而不是控件模板上的触发器:
<Style x:Key="comboBoxStyle" TargetType="{x:Type local:PASCustomComboBox}">
<Style.Triggers>
<Trigger Property="local:PASCustomComboBox.IsEnabled" Value="false">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2241 次 |
| 最近记录: |