0

週スケジューラを作ろうとしています

そのため、毎日、itemspaneltemplate としてグリッドを持つリストボックスがあり、個々のセッションはデータベースから行と行スパンを取得し、非常にうまく機能しています。

問題は、予定が短いため、行スパンが 2 または 3 しかなく、コンテンツが長い場合です。その場合、予定を含む行は、より大きなコンテンツに対応するために大きくなります。

私はそれを望んでいません。すべてのデータが表示されていなくても、予定に期間が反映されていることを確認してください

私はオンラインで見つけた答えの多くの組み合わせを試しました

マークアップ全体はこちら

<ListBox Name="lsbTasks" Loaded="lsbTasks_Loaded_1" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled" VerticalContentAlignment="Stretch" >
                            <ListBox.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <Grid Initialized="Grid_Initialized_1" Background="Thistle"  IsSharedSizeScope="True"/>
                                </ItemsPanelTemplate>
                            </ListBox.ItemsPanel>
                            <ItemsControl.ItemContainerStyle>
                                <Style>
                                    <Setter Property="Grid.Row" Value="{Binding BusyFrom,Converter={StaticResource BusyFromConverter}}" />
                                    <Setter Property="Grid.RowSpan" Value="{Binding BusyMinutes,Converter={StaticResource BusyMinutesConverter}}" />
                                    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
                                </Style>
                            </ItemsControl.ItemContainerStyle>
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <ScrollViewer ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.IsDeferredScrollingEnabled="True">
                                        <StackPanel Background="Purple" PreviewMouseDown="DockPanel_PreviewMouseDown_1">

                                            <TextBlock TextAlignment="Center" TextWrapping="Wrap" Text="{Binding SessionPlace}" Foreground="Thistle" DockPanel.Dock="Bottom" />
                                            <TextBlock  TextAlignment="Center" TextWrapping="Wrap" Text="{Binding ClientName}" Foreground="White" FontWeight="Bold" DockPanel.Dock="Top" />
                                            <TextBlock  TextAlignment="Center" TextWrapping="Wrap" Text="{Binding OppositionName}" Foreground="White" DockPanel.Dock="Top" />
                                            <TextBlock  TextAlignment="Center" TextWrapping="Wrap" Text="{Binding SubjectName}" Foreground="Thistle" />
                                        </StackPanel>
                                    </ScrollViewer>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox>

ここに初期化コードがあります

Private Sub Grid_Initialized_1(sender As Grid, e As EventArgs)
    Dim mnts = MyWorkDaySpan.TotalMinutes
    For i = 1 To mnts / 10
        Dim rd = New RowDefinition With {.Height = New GridLength(1, GridUnitType.Star)}
        'rd.SharedSizeGroup = "RowGroup"
        sender.RowDefinitions.Add(rd)
    Next
End Sub

しかし、グリッド線で証明されているように、行はまだ不均一です

任意のヘルプまたはガイダンスに感謝します

4

1 に答える 1

1

おそらく Canvas などの別の Panel を使用し、ListBoxItem スタイルでCanvas.Topおよびプロパティをバインドする必要があります。Height

もう 1 つの方法は、2 つの添付プロパティを定義し、これらのプロパティの値に従って子要素を配置するカスタム Panel クラス ("CalendarPanel") を作成することですBusyFromBusyMinutes

于 2013-06-27T08:35:22.763 に答える