Используя datagrid, чтобы сделать календарь wpf - PullRequest
0 голосов
/ 31 октября 2011

Я сделал каландр, используя сетку. Имеет 7 столбцов и 6 строк. Получая день недели и неделю месяца, я могу понять, как поместить даты в сетку выбранной даты. Однако сетка показывает только уродливые линии сетки. Как я могу изменить это, чтобы использовать сетку данных, чтобы у меня могли быть сплошные линии сетки, как должен выглядеть каландр. Или есть какой-нибудь другой способ избавиться от пунктирных линий сетки, чтобы он выглядел лучше? Заранее спасибо.

XAML: я делаю ItemsControl, и это сетка с 7 столбцами и 6 строками.

 <Grid Name="mainGrid">
    <Grid Name="controlGrid" Margin="0,56,0,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="297*" />
            <ColumnDefinition Width="290*" />
        </Grid.ColumnDefinitions>
        <ItemsControl ItemsSource="{Binding schedule}"  Name="Calender" VerticalAlignment="Stretch" Grid.ColumnSpan="2">
        <ItemsControl.Template>
            <ControlTemplate TargetType="ItemsControl" >
                <Border BorderBrush="Aqua" BorderThickness="4">
                    <ItemsPresenter/>
                </Border>

            </ControlTemplate>



        </ItemsControl.Template>
        <!-- ItemsPanelTemplate -->
        <ItemsControl.ItemsPanel>

            <ItemsPanelTemplate>

                <Grid ShowGridLines="True" Name="gridCalender">

                    <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>

                <TextBlock OpacityMask="Black"  Name="txtBlockdays">
                    <Button Content="{Binding day}" Width="175" HorizontalAlignment="Stretch" VerticalAlignment="Top" VerticalContentAlignment="Top" HorizontalContentAlignment="Left" Background="#FF94EBEB">

                    </Button>
                </TextBlock>
            </DataTemplate>
        </ItemsControl.ItemTemplate>


        <!-- ItemContainerStyle -->
        <ItemsControl.ItemContainerStyle>
            <Style >
                <Setter Property="Grid.Column" Value="{Binding WeekDay}" />
                <Setter Property="Grid.Row" Value="{Binding WeekNo}" />

            </Style>
        </ItemsControl.ItemContainerStyle>




    </ItemsControl>
    </Grid>
<Grid Name="dayGrid" VerticalAlignment="Top" Height="50">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Label Content="Monday" Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="label2" VerticalAlignment="Bottom" Grid.Column="1" FontSize="16" />
        <Label Content="Tuesday" Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="label3" VerticalAlignment="Bottom" Grid.Column="2" FontSize="16" />
        <Label Content="Wednesday" Height="Auto" HorizontalAlignment="Stretch" Name="label4" VerticalAlignment="Bottom" Grid.Column="3" Margin="0" FontSize="16" />
        <Label Content="Thursday" Height="Auto" HorizontalAlignment="Stretch" Name="label5" VerticalAlignment="Bottom" Grid.Column="4" Margin="0" FontSize="16" />
        <Label Content="Friday" Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="label6" VerticalAlignment="Bottom" Grid.Column="5" FontSize="16" />
        <Label Content="Saturday" Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="label7" VerticalAlignment="Bottom" Grid.Column="6" FontSize="16" />
        <Button Content="&lt;" Height="23" HorizontalAlignment="Left" Margin="0,1,0,0" Name="btnDateLeft" VerticalAlignment="Top" Width="29" Click="btnDateLeft_Click" />
        <Button Content="&gt;" Height="23" HorizontalAlignment="Left" Margin="26,1,0,0" Name="btnDateRight" VerticalAlignment="Top" Width="30" Click="btnDateRight_Click" />
        <Label Content="Sunday" Name="label1" Width="Auto" FontSize="16" Margin="0,19,0,0" />
    </Grid>
    <Label HorizontalAlignment="Left" Margin="62,1,0,0" Name="lblDate" VerticalAlignment="Top" FontSize="15" FontWeight="Bold" Height="32" />
</Grid>

1 Ответ

1 голос
/ 31 октября 2011

Настройте ItemContainerStyle и установите для ShowGridlines значение false.

<ItemsControl.ItemContainerStyle>
            <Style TargetType="ComboBoxItem">
                <Setter Property="Grid.Column" Value="{Binding WeekDay}" />
                <Setter Property="Grid.Row" Value="{Binding WeekNo}" />
                <Setter Property="Control.BorderBrush" Value="Black" />
            </Style>
</ItemsControl.ItemContainerStyle>

Также обратите внимание, что вы также можете поместить Rectangle в каждую коробку, которую вы также используете соответственно. Есть много способов достичь того, чего вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...