двойные строки в listview c # uwp - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь решить эту проблему, но мне не удалось найти решение .. У меня есть словарь (ключ, значение), как это:

 private Dictionary<string, string> myDictionary = new Dictionary<string, string>();

этот словарь заполнен некоторыми значениями(строка, строка), таким образом:

   private void LoadData()
    {
        myDictionary = FillMyDictionary();
        foreach (var str in myDictionary)
        {
            myDictionayList.Items.Add(str.Key);
        }
    }

В файле Xaml я показываю словарь в виде списка следующим образом:

        <ListView x:Name="myDictionayList" Margin="0,25,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" Width="250" Height="640" FontSize="12" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="False" IsEnabled="False" IsHitTestVisible="False" Background="Transparent">
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Center"/>
                    <Setter Property="MinHeight" Value="25"/>
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>

Таким образом, я могупоказать ключевые значения моего словаря в ListView.Теперь я хотел бы добавить вторую строку, в которую я поместил также значение словаря, получив что-то вроде этого:

enter image description here

спасибо за ваши предложения

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Вы можете легко сделать это, отредактировав ItemTemplate представления списка и добавив StackPanel следующим образом:

<ListView x:Name="MyListView">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel >
                <TextBlock Text="{Binding Key}"/>
                <TextBlock Text="{Binding Value}"/>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

и ItemSource ListView, очевидно, переходит в словарьв коде:

MyListView.ItemsSource = new Dictionary<string, string>
{
    {"Item1", "Description1"},
    {"Item2", "Description2" }
};

, который дает такой результат:

enter image description here

Я думаю, это то, что вы хотите.Надеюсь, это поможет.

0 голосов
/ 12 декабря 2018

Я думаю, что вы имели в виду myDictionayList.Items.Add (str.Key) в коде вашего вопроса.

Вы ищете что-то подобное?

<ListView x:Name="myDictionayList" Margin="0,25,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" Width="250" Height="640" FontSize="12" IsDoubleTapEnabled="False" IsHoldingEnabled="False" IsRightTapEnabled="False" IsTapEnabled="True" IsEnabled="True" IsHitTestVisible="False" Background="Transparent">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Center"/>
                <Setter Property="MinHeight" Value="25"/>
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <TextBlock Text="{Binding Key}" Grid.Row="0"></TextBlock>
                    <TextBlock Text="{Binding Value}" Grid.Row="1" Foreground="Gray"></TextBlock>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

Тогда вы можете просто добавитьЭлемент словаря для списка myDictionayList и стиль каждой строки, однако, я просто установил его как серый.

        foreach (var str in myDictionary)
        {
            myDictionayList.Items.Add(str);

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