Нумерованный список

Очень возможно иметь несколько версий glibc в одной и той же системе (мы делаем это каждый день).

Однако вам нужно знать, что glibc состоит из множества частей (200 + разделяемых библиотек) которые все должны совпадать. Одна из частей - ld-linux.so.2, а должна соответствовать libc.so.6, или вы увидите ошибки, которые видите.

Абсолютный путь к ld-linux.so.2 жестко закодирован в исполняемый файл во время соединения и не может быть легко изменен после завершения связи.

Чтобы создать исполняемый файл, который будет работать с новым glibc , сделайте следующее:

g++ main.o -o myapp ... \
   -Wl,--rpath=/path/to/newglibc \
   -Wl,--dynamic-linker=/path/to/newglibc/ld-linux.so.2

Опция компоновщика -rpath сделает загрузчик времени выполнения для поиска библиотек в /path/to/newglibc (так что вам не нужно было бы устанавливать LD_LIBRARY_PATH перед запуском), и параметр -dynamic-linker будет «испечь» путь, чтобы исправить ld-linux.so.2 в приложении.

Если вы не можете повторно подключить приложение myapp (например, потому что это сторонний двоичный файл), не все потеряно, но становится сложнее. Одно из решений - установить для него подходящую среду chroot. Другая возможность - использовать rtldi и двоичный редактор .

23
задан Ry- 21 July 2012 в 00:49
поделиться

2 ответа

Это должно начать вас:

http://weblogs.asp.net/hpreishuber/archive/2008 /11/18/rownumber-in-silverlight-datagrid-or-listbox.aspx

В нем говорится, что это для Silverlight, но я не понимаю, почему это не будет работать для WPF. По сути, вы привязываете TextBlock к своим данным и используете специальный преобразователь значений для вывода номера текущего элемента.

4
ответ дан 28 November 2019 в 22:59
поделиться

Идея ссылки Дэвида Брауна состояла в том, чтобы использовать работающий преобразователь значений. Ниже приведен полный рабочий образец. Окно списка содержит номера строк и может быть отсортировано как по имени, так и по возрасту.

XAML:

<Window x:Class="NumberedListBox.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:NumberedListBox"
    Height="300" Width="300">

    <Window.Resources>

        <local:RowNumberConverter x:Key="RowNumberConverter" />

        <CollectionViewSource x:Key="sortedPersonList" Source="{Binding Path=Persons}" />

    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <ListBox 
            Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"
            ItemsSource="{Binding Source={StaticResource sortedPersonList}}" 
            HorizontalContentAlignment="Stretch">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock 
                            Text="{Binding Converter={StaticResource RowNumberConverter}, ConverterParameter={StaticResource sortedPersonList}}" 
                            Margin="5" />
                        <TextBlock Text="{Binding Path=Name}" Margin="5" />
                        <TextBlock Text="{Binding Path=Age}" Margin="5" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <Button Grid.Row="1" Grid.Column="0" Content="Name" Tag="Name" Click="SortButton_Click" />
        <Button Grid.Row="1" Grid.Column="1" Content="Age" Tag="Age" Click="SortButton_Click" />
    </Grid>
</Window>

Код:

using System;
using System.Collections.ObjectModel;
using System.Windows.Data;
using System.Windows;
using System.ComponentModel;
using System.Windows.Controls;

namespace NumberedListBox
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            Persons = new ObservableCollection<Person>();
            Persons.Add(new Person() { Name = "Sally", Age = 34 });
            Persons.Add(new Person() { Name = "Bob", Age = 18 });
            Persons.Add(new Person() { Name = "Joe", Age = 72 });
            Persons.Add(new Person() { Name = "Mary", Age = 12 });

            CollectionViewSource view = FindResource("sortedPersonList") as CollectionViewSource;
            view.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));

            DataContext = this;
        }

        public ObservableCollection<Person> Persons { get; private set; }

        private void SortButton_Click(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;
            string sortProperty = button.Tag as string;
            CollectionViewSource view = FindResource("sortedPersonList") as CollectionViewSource;
            view.SortDescriptions.Clear();
            view.SortDescriptions.Add(new SortDescription(sortProperty, ListSortDirection.Ascending));

            view.View.Refresh();
        }
    }

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
}

Преобразователь значений:

using System;
using System.Windows.Data;

namespace NumberedListBox
{
    public class RowNumberConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            CollectionViewSource collectionViewSource = parameter as CollectionViewSource;

            int counter = 1;
            foreach (object item in collectionViewSource.View)
            {
                if (item == value)
                {
                    return counter.ToString();
                }
                counter++;
            }
            return string.Empty;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
4
ответ дан 28 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

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