powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Список как в аутлуке
18 сообщений из 18, страница 1 из 1
Список как в аутлуке
    #38895975
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как можно сделать?
Без WPF, желательно стандартными, в крайнем случае бесплатными компонентами.
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38896115
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему именно без WPF? Приложение винформсовое? Всуньте в форму ElementHost , а в него WPF-ный ListView, в котором это делается на раз.
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38896147
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныА почему именно без WPF? Приложение винформсовое? Всуньте в форму ElementHost , а в него WPF-ный ListView, в котором это делается на раз.Ну если это действительно на раз, я готов попробовать. Просто кажется, что закопаюсь в него, а времени мало.
Однажды мне уже приходилось делать wpf-листвью, но обычного табличного представления, а тут я пока не понимаю, в какую сторону копать, чтобы придать ему такой вид.
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38896159
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

гугл по фразе "wpf listbox datatemplate" - вот в эту сторону
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38896423
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел годный пример: http://blogs.msdn.com/b/roman/archive/2008/12/26/9253779.aspx на базе листбокса.
Но там PresentationFramework версии 3, а у меня 4, вот это всё не работает:

Код: c#
1.
2.
<Style x:Key="listBoxStyle1" TargetType="{x:Type ListBox}">
 <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38896450
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел, System.Xaml не был подключен.
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38896633
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

тех, кто убирает выделение с помощью подмены ресурсов иногда хочется расстрелять =) не знаю почему, но такой способ меня просто выбешивает ) как и класс Selector в целом

пример в 4 должен работать на изи
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38896644
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesAntonariy,

тех, кто убирает выделение с помощью подмены ресурсов иногда хочется расстрелять =) не знаю почему, но такой способ меня просто выбешивает ) как и класс Selector в целом

пример в 4 должен работать на изия просто переносил текст в свой проект, вникая по ходу. уже убрал :)
в примере делалась своя подсветка, мне оно не надо.
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897107
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каменный цветок начал выходить, что делать дальше? :)
А конкретно:
1) Хочу сделать полоску под каждой записью, делаю с помощью нижнего бордера, бордер рисуется только под иконкой, в какое месть его не вставляй. А вставляется только в промежутке между </Grid.RowDefinitions> и </Grid>.
2) Почему нормально отрисовался только первый img, а остальные исказились?
3) У контрола на форме Docking = Fill, как тоже самое сделать у листбокса внутри контрола?
4) Как сделать, чтобы последняя колонка была резиновой, чтобы текст преносился? TextWrapping у текстблока работает только если ей сделать фиксированный размер.
5) Как изменить цвет шрифта текстблока? В окошке свойств выбираю Brush - Foreground, при попытке ткнуть в палитру студия демонстирует ошибку The property is not valid.
6) Откуда взялся конский отступ между 2м и 3м элементами?

Разметка:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<UserControl
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:System="clr-namespace:System;assembly=mscorlib" x:Class="UserControl1" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <UserControl.Resources>
        <Style x:Key="listBoxStyle1" TargetType="{x:Type ListView}">
            <Setter Property="ItemTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <Grid Name="gridItem">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition />
                                <ColumnDefinition Width="150" />
                                <ColumnDefinition />
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition />
                            </Grid.RowDefinitions>
                            <Border BorderThickness="0 0 0 1" BorderBrush="Gray"/>
                            <Image Width="16" Height="16" Margin="5 5 5 0" Source="{Binding Icon}" Grid.Row="0" Grid.Column="0" VerticalAlignment="Top"/>
                            <TextBlock Margin="5 5 5 0" Text="{Binding Date}" Grid.Row="0" Grid.Column="1" FontWeight="Bold" />
                            <TextBlock Margin="5 5 5 0" Text="{Binding Description}" Grid.Row="0" Grid.Column="2" FontWeight="Bold"/>
                            <TextBlock Margin="5 0 5 0" Text="{Binding Filename}" Grid.Row="1" Grid.Column="1"/>
                            <TextBlock Margin="5 0 5 0" Text="{Binding Message}" Grid.Row="1" Grid.Column="2" TextWrapping="Wrap"/>
                        </Grid>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
    <Grid>
        <ListView Name="lbFiles"  ItemsSource="{Binding}" Style="{StaticResource listBoxStyle1}" VerticalAlignment="Top" />
    </Grid>
</UserControl>

Картинка:
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897120
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выкинул из разметки <Grid>, результат не изменился. Зачем он там был?
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897228
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модераторы, перенесите тему в раздел wpf что ли...
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897406
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<UserControl
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  x:Class="wf_test.UserControl1" 
  mc:Ignorable="d" 
  d:DesignHeight="300" d:DesignWidth="300"
  UseLayoutRounding="True">
  <UserControl.Resources>
    <Style x:Key="listBoxStyle1" TargetType="{x:Type ListBox}">
      <Setter Property="ItemTemplate">
        <Setter.Value>
          <DataTemplate>
            <Border BorderThickness="0 0 0 1" BorderBrush="Gray">
              <Grid Name="gridItem">
                <Grid.ColumnDefinitions>
                  <ColumnDefinition Width="30"/>
                  <ColumnDefinition Width="150" />
                  <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                  <RowDefinition />
                  <RowDefinition />
                </Grid.RowDefinitions>
                <Image Margin="5 5 5 0" VerticalAlignment="Top" HorizontalAlignment="Left" Stretch="None" Source="{Binding Icon}" Grid.Row="0" Grid.Column="0" />
                <TextBlock Margin="5 5 5 0" Text="{Binding Date}" Grid.Row="0" Grid.Column="1" FontWeight="Bold" />
                <TextBlock Margin="5 0 5 0" Text="{Binding FileName}" Grid.Row="1" Grid.Column="1" TextWrapping="Wrap"/>
                <TextBlock Margin="5 5 5 0" Text="{Binding Description}" Grid.Row="0" Grid.Column="2" FontWeight="Bold" TextWrapping="Wrap"/>
                <TextBlock Margin="5 0 5 0" Text="{Binding Message}" Grid.Row="1" Grid.Column="2" TextWrapping="Wrap"/>
              </Grid>
            </Border>
          </DataTemplate>
        </Setter.Value>
      </Setter>
    </Style>
  </UserControl.Resources>
  <ListBox Name="lbFiles"
    ItemsSource="{Binding}"
    Style="{StaticResource listBoxStyle1}"
    HorizontalContentAlignment="Stretch"
    ScrollViewer.HorizontalScrollBarVisibility="Disabled" />
</UserControl>


Важные моменты (тэги выделения внутри [SRC XML] не работают, поэтому перечисляю):
1. Для колонки грида с длинным текстом (последняя, третья) ColumnDefinition Width="*", а не Auto.
2. У листбокса: ScrollViewer.HorizontalScrollBarVisibility="Disabled" - чтобы листбокса не скроллировался по горизонтали из-за растянувшегося текста.
3. У листбокса: HorizontalContentAlignment="Stretch" - чтобы границы айтема (бордер) были одинаковы у всех элементов листбокса, иначе они в точности будут соответствовать размеру каждого отдельного элемента (а они разные).
4. У самого контрола: UseLayoutRounding="True" - иначе при отрисовке расплываются отдельные части темплейта (например, все та же нижныы граница).
У меня результат выглядит вот так:
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897413
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловнытэги выделения внутри [SRC XML] не работают
Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897451
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Спасибо, все получилось. :)

Остался вопрос с цветом шрифта.
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897456
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProУчимся использовать тэги оформления кода - FAQ
Научите меня использовать тэги выделения >>> и <<< внутри [SRC XML]. Спасибо.
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897458
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Прописывайте Foreground руками в разметке, и всё будет в порядке:
Код: xml
1.
<TextBlock Margin="5 0 5 0" Text="{Binding Message}" Grid.Row="1" Grid.Column="2" TextWrapping="Wrap" Foreground="Red"/>
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897467
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныНаучите меня использовать тэги выделения >>> и <<< внутри [SRС XML]. Спасибо==> работает ))
Код: xml
1.
2.
3.
4.
5.
                <Image Margin="5 5 5 0" VerticalAlignment="Top" HorizontalAlignment="Left" Stretch="None" Source="{Binding Icon}" Grid.Row="0" Grid.Column="0" />
                <TextBlock Margin="5 5 5 0" Text="{Binding Date}" Grid.Row="0" Grid.Column="1" FontWeight="Bold" />
                <TextBlock Margin="5 0 5 0" Text="{Binding FileName}" Grid.Row="1" Grid.Column="1" TextWrapping="Wrap"/>
                <TextBlock Margin="5 5 5 0" Text="{Binding Description}" Grid.Row="0" Grid.Column="2" FontWeight="Bold" TextWrapping="Wrap"/>
                <TextBlock Margin="5 0 5 0" Text="{Binding Message}" Grid.Row="1" Grid.Column="2" TextWrapping="Wrap"/>
...
Рейтинг: 0 / 0
Список как в аутлуке
    #38897657
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для управления форматированием текста используется прикрепляемые свойства класса TextElement, все они наследуемые.
что такое прикрепляемые и наследуемые свойства спросите у гугла или ищите в поиске на форуме,
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Список как в аутлуке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]