我试图将Calendar控件扩展为我自己的控件,它具有一些依赖属性,用于设置悬停颜色,当天高亮显示等内容。我已经获得了所有属性并使用绑定将它们连接起来,但由于某种原因,为星期几标题显示的文本不会更改其字体颜色或样式。起初我认为这是我的绑定因为我使用了RelativeSource并找到了祖先类型,但我尝试在DataTemplate中显式设置它们但没有任何效果。
这是日历库中的继承问题吗?或者内部有什么东西会覆盖我的模板?这是CalendarItem的DataTemplate:
<DataTemplate x:Key="{x:Static CalendarItem.DayTitleTemplateResourceKey}">
<TextBlock Foreground="Red"
FontWeight="Bold"
FontSize="{Binding FontSize, RelativeSource={RelativeSource AncestorType=local:CalendarControl}}"
FontFamily="Arial"
HorizontalAlignment="Center"
Margin="0,6,0,6"
Text="{Binding}"
VerticalAlignment="Center" />
</DataTemplate>
从这里我理解它的方式,这个DataTemplate用于动态生成这些项目,然后插入到&#34; PART_MonthView&#34;网格如下:
<Grid x:Name="PART_MonthView"
Grid.ColumnSpan="3"
TextElement.FontFamily="Arial"
HorizontalAlignment="Center"
Margin="6,-1,6,6"
Grid.Row="1"
Visibility="Visible">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
</Grid>
这个DataTemplate是否是正确的模板?在运行时查看控件并使用snoop浏览可视树时,您可以看到插入到网格中的文本块,但值来自本地源:
我很难过,无法找到关于如何设计这些东西的具体答案。我最好建立自己的UI,然后只是观察属性值,看看它们是否会发生变化?非常感谢任何帮助。