Как я могу связать набор Списка с заголовками TabControl в WPF?

Вот ответ на вторую часть вопроса. Если у вас есть IntStream в результате вызова string.chars(), вы можете получить Stream, выполнив кастинг на char, а затем боксируя результат, вызвав mapToObj. Например, вот как превратить String в Set:

Set set = string.chars()
    .mapToObj(ch -> (char)ch)
    .collect(Collectors.toSet());

Обратите внимание, что приведение к char важно, чтобы результат в блоке был Character вместо Integer .

. Теперь большая проблема с обработкой данных char или Character заключается в том, что дополнительные символы представлены как суррогатные пары значений char, поэтому любой алгоритм с сделками с отдельными char значениями, вероятно, не удастся при представлении дополнительных символов.

(Может показаться, что дополнительные символы - это неясная функция Юникода, о которой нам не нужно беспокоиться, но насколько я знаю , все emoji являются дополнительными символами.)

Рассмотрим этот пример:

string.chars()
      .filter(Character::isAlphabetic)
      ...

Это приведет к сбою, если будет представлена ​​строка, содержащая кодовую точку U + 1D400 (Математическая полужирная капитализация A ). Эта кодовая точка представляется в виде суррогатной пары в строке, и ни значение суррогатной пары не является буквенным символом. Чтобы получить правильный результат, вам нужно будет сделать это:

string.codePoints()
      .filter(Character::isAlphabetic)
      ...

Я рекомендую всегда использовать codePoints().

Теперь, учитывая IntStream кодовых точек , как можно собрать его в строку? Ответ Sleiman Jneidi является разумным (+1), используя метод tr-arg collect() IntStream.

Вот альтернатива:

StringBuilder sb = ... ;
string.codePoints()
      .filter(...)
      .forEachOrdered(sb::appendCodePoint);
return sb.toString();

Это может быть немного более гибким, если у вас уже есть StringBuilder, который вы используете для накопления строковых данных. Вам не нужно создавать новый StringBuilder каждый раз, и вам не нужно впоследствии преобразовывать его в String.

23
задан Edward Tanguay 26 February 2009 в 10:04
поделиться

4 ответа

просто свяжите свой Список с Вашим TabControl как ItemsSource, например,

<TabControl ItemsSource="{Binding Customers}"/>

это даст Вам вкладку для каждого объекта в клиенте.

7
ответ дан Joachim Kerschbaumer 29 November 2019 в 01:04
поделиться

Ваш ответ может быть найден здесь.

http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=31821

Уведомление, как он устанавливает ContentTemplate, а также ItemTemplate... Вы почти, имело его!

5
ответ дан 29 November 2019 в 01:04
поделиться

boost:: функция выглядит здесь как идеальная посадка.

-121--3311480-

Для этого можно использовать чистый Python:

import json
list = [1, 2, (3, 4)] # Note that the 3rd element is a tuple (3, 4)
json.dumps(list) # '[1, 2, [3, 4]]'
-121--1173078-

Я нашел решение здесь:

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/956eaba3-53bd-4683-b3dd-28b20e4b7526/

Это сработало на меня.

3
ответ дан 29 November 2019 в 01:04
поделиться

Вот что я бы сделал

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        //create all 
        var customers = new List<Customer>{
            new Customer {FirstName = "Jim", LastName = "Smith", NumberOfContracts = 23},
            new Customer {FirstName = "Jane", LastName = "Smith", NumberOfContracts = 23},
            new Customer {FirstName = "John", LastName = "Tester", NumberOfContracts = 23}};

        //show 
        TheTabControl.ItemsSource = customers;
        TheTabControl.SelectedIndex = 0;
    }


public class Customer
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int NumberOfContracts { get; set; }
}

И на стороне XAML

<TabControl x:Name="TheTabControl">            
    <TabControl.ItemTemplate>
        <DataTemplate>                    
            <TextBlock>                            
                <TextBlock Text="{Binding FirstName}"/> <TextBlock Text="{Binding LastName}"/>
            </TextBlock>                        
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <TextBlock>                            
                This is <TextBlock Text="{Binding FirstName}"/> <TextBlock Text="{Binding LastName}"/>
            </TextBlock>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>
50
ответ дан 29 November 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: