1

我对 silverlight 完全陌生,我被赋予了修改它的任务。我的问题很简单(如果在 asp.net webforms 中完成)。基本上,在网格中,我想将年份附加到这样的东西上。

Jan + "-" + DateTime.Now.Year.ToString()

Feb + "-" + DateTime.Now.Year.ToString()

等等..等等..

xaml 看起来像这样

<Grid x:Name="ContentGrid" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0">
                <Grid.Resources>

<DataTemplate x:Key="mykey1">
                        <Grid >....</Grid>
</DataTemplate>
<DataTemplate x:Key="mykey2">
                        <Grid >....</Grid>
</DataTemplate>
<DataTemplate x:Key="mykey3">
                        <Grid >
<StackPanel Orientation="Vertical">
<Border BorderBrush="{StaticResource LogicaPebbleBlackBrush}" BorderThickness="1">
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal" Style="{StaticResource HeaderStackPanel}">


<TextBlock Style="{StaticResource HeaderTextBlock}" Text="Jan-2013" Width="75" TextAlignment="Center"/>
<TextBlock Style="{StaticResource HeaderTextBlock}" Text="Feb-2013" Width="75" TextAlignment="Center"/>


</StackPanel>
</StackPanel>
</Grid>
</DataTemplate>
</ Grid>
</DataTemplate>

我只想让这一年充满活力,让它每年都在变化。请帮忙。

4

3 回答 3

0

我重读了你的问题,我认为你需要做这样的事情。由于您在网格中工作,因此可以命名您的文本块。

    <TextBlock Style="{StaticResource HeaderTextBlock}" x:Name="JanTB" Width="75" TextAlignment="Center"/>

在您的后台代码中,将文本放在文本块内就足够了。

    JanTB.Text = "Jan-" + Datetime.now.Year.ToString();

我希望这能解决你的问题。

于 2012-11-05T09:44:17.353 回答
0

这可能会对您有所帮助。它只是 xaml:

<Grid.Resources>
      <System:DateTime  x:Key="DateTimeDataSource"/>
</Grid.Resources>

<TextBlock DataContext="{Binding Source={StaticResource DateTimeDataSource}}" 
      Text="{Binding Today.Year}">
</TextBlock>

确保添加此命名空间:

xmlns:System="clr-namespace:System;assembly=mscorlib" 

您也可以显示其他 DateTime 属性:Now.Day、Today.Month 等。

于 2012-10-11T14:26:20.450 回答
0

我不知道这是否可以直接在 XAML 中完成。

最好使用绑定来完成。在 Silverlight 中,您大多数数据源绑定到代码隐藏中的属性(即 ViewModel)。

简而言之:

  1. 将页面的 DataContext 设置为代码隐藏类(通常是 ViewModel)
  2. ViewModel 必须实现 INotifyPropertyChanged 接口
  3. 绑定 TextBox 的文本以使用 ViewModel 中的 Date 属性,该属性在代码中进行计算

设置好 DataContext 后,您可以按如下方式编写 XAML:

<TextBlock Text="{Binding Path=Year, Mode=OneWay}" />

您的 ViewModel 属性将如下所示:

public class ViewModel : INotifyPropertyChanged
{
    private DateTime _year = DateTime.Now;
    public DateTime Year
    {
        get { return _year; }    // <--- append whatever here or in the setter
        set
        {
            _year = value; 

            if( this.PropertyChanged != null )
            {
                this.PropertyChanged( this, new PropertyChangedEventArgs( "Year" ) );
            }
         }
     }
  ...
}
于 2012-10-11T13:26:02.437 回答