Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Список как в аутлуке / 18 сообщений из 18, страница 1 из 1
05.03.2015, 14:08
    #38895975
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Как можно сделать?
Без WPF, желательно стандартными, в крайнем случае бесплатными компонентами.
...
Рейтинг: 0 / 0
05.03.2015, 15:09
    #38896115
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
А почему именно без WPF? Приложение винформсовое? Всуньте в форму ElementHost , а в него WPF-ный ListView, в котором это делается на раз.
...
Рейтинг: 0 / 0
05.03.2015, 15:24
    #38896147
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Сон Веры ПавловныА почему именно без WPF? Приложение винформсовое? Всуньте в форму ElementHost , а в него WPF-ный ListView, в котором это делается на раз.Ну если это действительно на раз, я готов попробовать. Просто кажется, что закопаюсь в него, а времени мало.
Однажды мне уже приходилось делать wpf-листвью, но обычного табличного представления, а тут я пока не понимаю, в какую сторону копать, чтобы придать ему такой вид.
...
Рейтинг: 0 / 0
05.03.2015, 15:30
    #38896159
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Antonariy,

гугл по фразе "wpf listbox datatemplate" - вот в эту сторону
...
Рейтинг: 0 / 0
05.03.2015, 18:11
    #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
05.03.2015, 18:23
    #38896450
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Нашел, System.Xaml не был подключен.
...
Рейтинг: 0 / 0
05.03.2015, 21:51
    #38896633
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Antonariy,

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

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

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

пример в 4 должен работать на изия просто переносил текст в свой проект, вникая по ходу. уже убрал :)
в примере делалась своя подсветка, мне оно не надо.
...
Рейтинг: 0 / 0
06.03.2015, 13:18
    #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
06.03.2015, 13:25
    #38897120
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Выкинул из разметки <Grid>, результат не изменился. Зачем он там был?
...
Рейтинг: 0 / 0
06.03.2015, 14:09
    #38897228
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Модераторы, перенесите тему в раздел wpf что ли...
...
Рейтинг: 0 / 0
06.03.2015, 16:10
    #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
06.03.2015, 16:14
    #38897413
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Сон Веры Павловнытэги выделения внутри [SRC XML] не работают
Учимся использовать тэги оформления кода - FAQ
...
Рейтинг: 0 / 0
06.03.2015, 16:40
    #38897451
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Сон Веры Павловны,

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

Остался вопрос с цветом шрифта.
...
Рейтинг: 0 / 0
06.03.2015, 16:42
    #38897456
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
Shocker.ProУчимся использовать тэги оформления кода - FAQ
Научите меня использовать тэги выделения >>> и <<< внутри [SRC XML]. Спасибо.
...
Рейтинг: 0 / 0
06.03.2015, 16:44
    #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
06.03.2015, 16:58
    #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
06.03.2015, 21:26
    #38897657
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Список как в аутлуке
для управления форматированием текста используется прикрепляемые свойства класса TextElement, все они наследуемые.
что такое прикрепляемые и наследуемые свойства спросите у гугла или ищите в поиске на форуме,
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Список как в аутлуке / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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