我正在做一个项目,我需要一个带阴影的计时器。我设法找到了一种方法来使用2个标签来做阴影,但我现在的问题是我需要给出两个相同的名称,以完全相同的方式在所有情况下执行而不会有重复的代码。这可能吗?
<Grid>
<Label x:Name="time" MouseDoubleClick="time_MouseDoubleClick" HorizontalAlignment="Center" FontFamily="Old English Text MT" Margin="0,5,0,0" FontSize="22" Content="00:00:00" FontWeight="Bold" Foreground="Black">
<Label.RenderTransform>
<TranslateTransform X="1.5" Y="1"/>
</Label.RenderTransform>
</Label>
<Label x:Name="time2" MouseDoubleClick="time_MouseDoubleClick" HorizontalAlignment="Center" FontFamily="Old English Text MT" Margin="0,5,0,0" FontSize="22" Content="00:00:00" FontWeight="Bold" Foreground="White"/>
</Grid>
这是代码查看投影的方式。有没有解决的办法?或者有一种类似HTML的方式,我可以定义一个“类”名称?
答案 0 :(得分:5)
您不需要两个标签。您需要DropShadowEffect
:
<Label Content="00:00:00">
<Label.Effect>
<DropShadowEffect/>
</Label.Effect>
</Label>
答案 1 :(得分:-1)
看起来你实际上需要一个drop-shaddow效果,另一个基于相同属性的两个控件更新的实现可能在于绑定。
在codebehind文件的initialize方法中设置DataContext。
DataContext = this;
更改您的xaml以绑定到公共字符串属性。
<Grid>
<Label x:Name="time" MouseDoubleClick="time_MouseDoubleClick" HorizontalAlignment="Center" FontFamily="Old English Text MT" Margin="0,5,0,0" FontSize="22" Content="{Binding Time}" FontWeight="Bold" Foreground="Black">
<Label.RenderTransform>
<TranslateTransform X="1.5" Y="1"/>
</Label.RenderTransform>
</Label>
<Label x:Name="time2" MouseDoubleClick="time_MouseDoubleClick" HorizontalAlignment="Center" FontFamily="Old English Text MT" Margin="0,5,0,0" FontSize="22" Content="{Binding Time}" FontWeight="Bold" Foreground="White"/>
</Grid>
(内容属性现在包含绑定)
确保代码隐藏中有属性以支持绑定
public string Time {get;set;}
你的代码隐藏(.cs文件)应该实现INotifyPropertyChanged接口,你的属性应该提升事件。
然后通过更改Time属性,XAML将自动更新。