是否可以在两个组件上使用相同的名称?

时间:2014-02-26 07:31:23

标签: c# wpf variables

我正在做一个项目,我需要一个带阴影的计时器。我设法找到了一种方法来使用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的方式,我可以定义一个“类”名称?

2 个答案:

答案 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将自动更新。