c# - C# WPF 中的错误:“System.Windows.Style”不是属性“System.Windows.Controls.Control.Template”的有效值
问题描述
我正在使用 WPF MVVM 模式,并在MainViewResource.xaml
.
正常情况下是没有问题的,但是当Slider
包含在 中时Control
,会出现以下错误。
“System.Windows.Style”不是属性“System.Windows.Controls.Control.Template”的有效值。
运行应用程序没有问题,但Control
不显示在 xaml 屏幕上。
MainViewResource.xaml
<Style TargetType="{x:Type Slider}" x:Key="SLD.INPUT">
...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Slider}">
<ControlTemplate.Resources>
...
</ControlTemplate.Resources>
<Border x:Name="border" Style="{StaticResource IN.BORDER.01}">
<Grid Style="{StaticResource IN.GRID}">
<DockPanel Style="{StaticResource IN.DOCK}">
<Border x:Name="PART_SelectionRange" Style="{StaticResource IN.BORDER.02}">
<Rectangle x:Name="sliderBar" Style="{StaticResource IN.RTG.01}"/>
</Border>
<Border Style="{StaticResource IN.BORDER.02}">
<Rectangle x:Name="PART_NegativeSelection" Style="{StaticResource IN.RTG.02}"/>
</Border>
</DockPanel>
<Track x:Name="PART_Track">
<Track.Thumb>
<Thumb x:Name="thumb" Style="{StaticResource IN.THUMB}"/>
</Track.Thumb>
</Track>
</Grid>
</Border>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ElementName=thumb, Path=IsMouseOver}" Value="true">
<Setter TargetName="sliderBar" Property="Fill" Value="{StaticResource LGB.SLD.FG.OVER}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=thumb, Path=IsDragging}" Value="true">
<Setter TargetName="sliderBar" Property="Fill" Value="{StaticResource LGB.SLD.FG.DRAG}"/>
</DataTrigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="PART_SelectionRange" Property="Visibility" Value="Collapsed"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type Control}" x:Key="CTL.INPUT">
<Setter Property="Grid.Row" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Control}">
<ControlTemplate.Resources>
<Style TargetType="{x:Type TextBlock}" x:Key="IN.CONTENT">
...
<Setter Property="Text" Value="{Binding ElementName=slider2, Path=Value, Converter={StaticResource StringFormatConverter}}"/>
</Style>
</ControlTemplate.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Slider x:Name="slider2" Style="{StaticResource SLD.INPUT}"/> // I guess here is the problem.
<TextBlock Style="{StaticResource IN.CONTENT}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
主窗口.xaml
<Control Style="{StaticResource CTL.INPUT}"/>
xaml 屏幕不显示任何内容,如下所示...
MainViewResource.xaml
用 正确注册了App.xaml
,其他控件的样式没问题。仅在将 Slider 的自定义样式用作StaticResource
. 有谁知道我错过了什么?
解决方案
推荐阅读
- c# - 实体框架 REST 端点以获取具有另一个实体的所有实体
- flutter - 即使使用 singleChildScrollView LIstview.bulder,底部也会溢出
- javascript - 调整页面大小时,Div 位于第一个 div 之下
- python - 如何捕获 IllegalMonthError
- python - 在不同的行中水平打印每个迭代
- apache-spark - 分区的 ORC 表在 Hive 中显示为空
- python - 一张一张地绘制不同的图python
- python - 我是 Python 的初学者,只是想知道将变量放在函数之前和函数内部之间有什么区别?
- c++ - 构造函数的重新定义
- python - Keras 准确度指标与 CNN 车道检测的自定义指标相比如何?