Как я могу обрабатывать параметры с пробелами в Delphi?

Моя программа принимает имена входных файлов либо как параметры командной строки, либо в операции перетаскивания, либо в проводнике, щелкая имена файлов с расширением, связанным с моей программой.

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

c:\temp\file one.txt
c:\my directory\filetwo.txt
c:\my directory\file three.txt

тогда функция ParamStr дает мне назад: } urlpatterns = patterns ('', (r '^ ...

Я использую общие представления django, как мне получить доступ к запросу в моем шаблоне.

URL-адреса:

file_objects = {
    'queryset' : File.objects.filter(is_good=True),
}
urlpatterns = patterns('',
    (r'^files/', 'django.views.generic.list_detail.object_list', dict(file_objects, template_name='files.html')),
)
-121 --- 1431067) - WPF: списки привязки в XAML - как элемент может узнать свою позицию в списке? Учитывая следующий код XAML, который имеет поведение, подобное ListControl:

Учитывая следующий код XAML с поведением, подобным ListControl:

    <StackPanel>
        <ItemsControl Name="_listbox" ItemsSource="{Binding ElementName=_userControl, Path=DataContext}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <DockPanel>
                         ...
                    </DockPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>

Поскольку список может быть длинным (100-200 элементов), а элементы выглядят аналогично, я думаю, что было бы полезно для пользователя во время прокрутки, если бы каждый элемент отображал свою позицию в списке. Как элемент в шаблоне может знать свою позицию в списке?

7
задан user256890 31 August 2010 в 08:38
поделиться

3 ответа

Вот решение для взлома. Мы можем использовать преобразование значений с DataBinding. Итак, первый шаг — объявить наш ValueConvertor:

public class ListItemToPositionConverter : IValueConverter
    {
        #region Implementation of IValueConverter

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var item = value as ListBoxItem;
            if (item != null)
            {
                var lb = FindAncestor<ListBox>(item);
                if (lb != null)
                {
                    var index = lb.Items.IndexOf(item.Content);
                    return index;
                }
            }
            return null;
        }            

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }

Объявите где угодно этот статический метод, чтобы получить родителя ListBox:

public static T FindAncestor<T>(DependencyObject from) where T : class
        {
            if (from == null)
                return null;

            var candidate = from as T;
            return candidate ?? FindAncestor<T>(VisualTreeHelper.GetParent(from));
        }

Затем в ListBox.Resources объявите наш конвертер следующим образом:

<ListBox.Resources>
                <YourNamespace:ListItemToPositionConverter x:Key="listItemToPositionConverter"/>
            </ListBox.Resources>

И, наконец, DataTemplate:

<ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource listItemToPositionConverter}}"/>
                        <Label Content="{Binding Path=DisplayName}"></Label>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>

Примечание: в этом примере элементы будут нумероваться, начиная с 0 (ноль), вы можете изменить это в методе Convert, добавив 1 к результату.

Надеюсь, это поможет...

5
ответ дан 7 December 2019 в 09:54
поделиться

Согласно статье MSDN Magazine "Диаграммы с шаблонами данных":

[...]DataTemplate потребуется доступ к индексу определенного элемента данных в коллекции. Но достаточно просто включить эту информацию в бизнес-объект[...]

Таким образом, если не было изменений в .NET 4, свойство «индекс этого элемента» отсутствует, если только оно явно не включено в модель. .

1
ответ дан 7 December 2019 в 09:54
поделиться

Этот образец поддерживает сортировку:

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

0
ответ дан 7 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

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