Я новичок в разработке окон. В настоящее время я создаю страницу событий, где мне нужно создать список событий на основе дат.Просмотр списка для создания горизонтального отображения в окнах 8.1
public class Appointment
{
public string DateTime{get; set;}
public Appointments Data {get; set;}
}
public class Appointments
{
public string UserName {get; set;}
public string VisitorFor {get; set;}
}
Список передается переднего события для генерации представления. Вид должен выглядеть следующим образом: [h] [d1] [d2] [d3] [h2] [d1] [d2] [h3] [d1] ... [h (n)] [d (n)]. Aimed model
В списке должны отображаться данные по горизонтали, и заголовок списка должен быть таким же, как на изображении. Как я могу отображать заголовок и контент на одной горизонтальной линии?
Ориентировочная платформа - это приложение для Windows 8.1.
Обновленный код после комментария
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused">
<Storyboard></Storyboard>
</VisualState>
<VisualState x:Name="Unfocused" />
<VisualState x:Name="PointerFocused" />
</VisualStateGroup>
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected">
<Storyboard>
<ColorAnimation Duration="0" Storyboard.TargetName="myback" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="Transparent"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Selected">
<Storyboard>
<ColorAnimation Duration="0" Storyboard.TargetName="myback" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="Gray"/>
</Storyboard>
</VisualState>
<VisualState x:Name="SelectedUnfocused">
<Storyboard>
<ColorAnimation Duration="0" Storyboard.TargetName="myback" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="Transparent"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="myback" Background="Transparent">
<ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Textblock Text="{Binding EventsObj.Value.UserName}"/>
<Textblock Text="{Binding EventsObj.Value.VisitorFor}"/>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.HeaderTemplate>
<DataTemplate>
<Grid Margin="5,10,0,10" Background="Black">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="68*"/>
<ColumnDefinition Width="21*"/>
</Grid.ColumnDefinitions>
<TextBlock Foreground="White"
RenderTransformOrigin="0.5,0.5" FontSize="20" Grid.ColumnSpan="2" UseLayoutRounding="False" d:LayoutRounding="Auto" Text="{Binding EventsObj.Key}">
<TextBlock.RenderTransform>
<RotateTransform Angle="270"/>
</TextBlock.RenderTransform>
</TextBlock>
</Grid>
</DataTemplate>
</ListView.HeaderTemplate>
Объекты
public class Appointment
{
public Dictionary<DateTime, List<Appointments>> Data {get; set;}
}
public class Appointments
{
public string UserName {get; set;}
public string VisitorFor {get; set;}
}
Я пробовал это, но у меня возникла проблема с привязкой к просмотру. Не могли бы вы направить меня туда, где я делаю ошибку. Каков наилучший способ (структура объекта C#) для привязки вида списка для item и heading В настоящее время я использую IDictionary Данные {get; set;} –
Я отредактировал сообщение с вашими предложенными изменениями. Но представление создается только для количества ключей в itemtemplate. (другие слова - если у меня есть 5 ключей в пользовательском интерфейсе, я получаю [d1], [d2], [d3], [d4], [d5]. Но должен был быть [h1], ..., [h5]. также мне не хватает данных в списке объектов словаря –