到目前为止,在我的日历上,只有当月需要的文本块(日期)周围才会有一个边框。我有一个有7列6行的网格,所以有42个单元格。一个月只有最多31天(单元格),所以我有很多没有边框的空单元格。我如何改变这一点,使所有42个单元格都有一个边框,使它看起来像一个日历。提前谢谢。:)
<Grid Name="controlGrid" Margin="0,56,0,0">
<Grid.ColumnDefinitions >
<ColumnDefinition Width="86*" />
<ColumnDefinition Width="83*" />
<ColumnDefinition Width="84*" />
<ColumnDefinition Width="84*" />
<ColumnDefinition Width="84*" />
<ColumnDefinition Width="84*" />
<ColumnDefinition Width="84*" />
</Grid.ColumnDefinitions>
<ItemsControl ItemsSource="{Binding schedule}"
Name="Calender"
VerticalAlignment="Stretch"
Grid.ColumnSpan="7"
Margin="0,-8,0,0">
<ItemsControl.Template>
<ControlTemplate TargetType="ItemsControl" >
<Border BorderBrush="CornflowerBlue" BorderThickness="3">
<ItemsPresenter/>
</Border>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid ShowGridLines="False" Name="gridCalender">
<Grid.Background>
<RadialGradientBrush>
<GradientStop Color="#FFC3D6F5" Offset="0" />
<GradientStop Color="#FFEFF5FF" Offset="1" />
</RadialGradientBrush>
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderThickness="0.5" BorderBrush="CornflowerBlue">
<TextBlock OpacityMask="Black" Name="txtBlockdays">
<Button Content="{Binding day}"
Width="175"
HorizontalAlignment="Stretch"
VerticalAlignment="Top"
VerticalContentAlignment="Top"
HorizontalContentAlignment="Left"
Name="btnCalenderDate"
Click="btnCalenderDate_Click"
Loaded="btnCalenderDate_Loaded"
Height="18"
FontSize="10"
FontWeight="Bold">
</Button>
</TextBlock>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style >
<Setter Property="Grid.Column" Value="{Binding WeekDay}" />
<Setter Property="Grid.Row" Value="{Binding WeekNo}" />
<Setter Property="Control.BorderBrush" Value="Black" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Grid>发布于 2011-11-02 21:43:32
我以前使用过代码找到的here,它扩展了Grid控件,使其包含允许您指定GridLine可见性、厚度和颜色的属性
<local:GridEx ShowCustomGridLines="True"
GridLineBrush="#FF38B800"
GridLineThickness="2">
...
</local:GridEx>如果链接失效,下面是代码:
public class GridControl : Grid
{
#region Properties
public bool ShowCustomGridLines
{
get { return (bool)GetValue(ShowCustomGridLinesProperty); }
set { SetValue(ShowCustomGridLinesProperty, value); }
}
public static readonly DependencyProperty ShowCustomGridLinesProperty =
DependencyProperty.Register("ShowCustomGridLines", typeof(bool), typeof(GridControl), new UIPropertyMetadata(false));
public Brush GridLineBrush
{
get { return (Brush)GetValue(GridLineBrushProperty); }
set { SetValue(GridLineBrushProperty, value); }
}
public static readonly DependencyProperty GridLineBrushProperty =
DependencyProperty.Register("GridLineBrush", typeof(Brush), typeof(GridControl), new UIPropertyMetadata(Brushes.Black));
public double GridLineThickness
{
get { return (double)GetValue(GridLineThicknessProperty); }
set { SetValue(GridLineThicknessProperty, value); }
}
public static readonly DependencyProperty GridLineThicknessProperty =
DependencyProperty.Register("GridLineThickness", typeof(double), typeof(GridControl), new UIPropertyMetadata(1.0));
#endregion
protected override void OnRender(DrawingContext dc)
{
if (ShowCustomGridLines)
{
foreach (var rowDefinition in RowDefinitions)
{
dc.DrawLine(new Pen(GridLineBrush, GridLineThickness), new Point(0, rowDefinition.Offset), new Point(ActualWidth, rowDefinition.Offset));
}
foreach (var columnDefinition in ColumnDefinitions)
{
dc.DrawLine(new Pen(GridLineBrush, GridLineThickness), new Point(columnDefinition.Offset, 0), new Point(columnDefinition.Offset, ActualHeight));
}
dc.DrawRectangle(Brushes.Transparent, new Pen(GridLineBrush, GridLineThickness), new Rect(0, 0, ActualWidth, ActualHeight));
}
base.OnRender(dc);
}
static GridControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(GridControl), new FrameworkPropertyMetadata(typeof(GridControl)));
}
}发布于 2011-11-02 08:48:04
只需添加额外的虚拟项目来填充其他单元格...
https://stackoverflow.com/questions/7974402
复制相似问题