powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ItemsPanel
6 сообщений из 6, страница 1 из 1
ItemsPanel
    #39524597
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно все очень просто, но я что-то не понимаю.
Беру DataGrid.
Хочу реализовать, к примеру, такой вид - каждая строка должна быть визуально "завернута" в некий контур.
Возникает желаение "приложить руки" к ItemsPanel.
Но, Border в шаблон элемента не принимается.
Код: c#
1.
2.
3.
4.
5.
 <DataGrid.ItemsPanel>
    <ItemsPanelTemplate>
      <Border/>
    </ItemsPanelTemplate>
  <DataGrid.ItemsPanel>


Пытаюсь обойти это как-нибудь:
Код: c#
1.
2.
3.
4.
5.
6.
7.
<DataGrid.ItemsPanel>
    <ItemsPanelTemplate>
      <Grid>
        <Border/>
      </Grid>
    </ItemsPanelTemplate>
  <DataGrid.ItemsPanel>


- не принимает WPF этой конструкции

Подскажите как сделать оформление строки грида
...
Рейтинг: 0 / 0
ItemsPanel
    #39524706
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧитательX,

Border это не панель, конечно, же она не применяется.
DataGrid.ItemsPanel это панель\контейнер для строк, с помощью него строки не оформить.
Чтоб добавить оформление для строк, нужно переопределить стиль DataGridRow, на сколько я помню, там уже есть декоратор, можно просто определить в стиле для DataGridRow цвет и ширину бордюра
...
Рейтинг: 0 / 0
ItemsPanel
    #39524707
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неужели никто не может подсказать как можно отдекорировать строку. Например, наложить картинку, нарисовать что-то, а поверх этого "пустить" ячейки колонок?
...
Рейтинг: 0 / 0
ItemsPanel
    #39524716
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да нужно поизучать декоратор строки. Я сним еще явно не работал.
...
Рейтинг: 0 / 0
ItemsPanel
    #39524796
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую ознакомиться с технологией в книге, перед тем как писать на ней :)

Пример:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<Application x:Class="DataGridRowDecorator.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:DataGridRowDecorator"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <local:MainModel x:Key="{x:Type local:MainModel}"/>
    </Application.Resources>
</Application>


Код: 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.
<Window x:Class="DataGridRowDecorator.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:DataGridRowDecorator"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525"
        DataContext="{StaticResource {x:Type local:MainModel}}">
    <Window.Resources>
        <Style TargetType="{x:Type DataGridRow}">
            <Setter Property="BorderThickness" Value="5,4,3,2"/>
            <Setter Property="BorderBrush" Value="Red"/>
            <Setter Property="MinHeight" Value="50"/>
            <Setter Property="Background">
                <Setter.Value>
                    <ImageBrush TileMode="Tile" Viewbox="0,0 1,1" Viewport="0,0 50,50" Stretch="None" ViewportUnits="Absolute"
                                ImageSource="http://asbseo.ru/wp-content/uploads/2011/12/bg_fon.png"/>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <DataGrid ItemsSource="{Binding Perones}"/>
    </Grid>
</Window>


Код: c#
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.
using System.Collections.Generic;
using System.ComponentModel;

namespace DataGridRowDecorator
{
    public class BaseModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        /// <summary> Occurs when a property value changes </summary>
        /// <param name="propertyName">Property name</param>
        protected void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    public class Person
    {
        public Person(string name, int age)
        {
            Name = name;
            Age = age;
        }

        public string Name { get; }
        public int Age { get; }
    }
    public class MainModel : BaseModel
    {
        public MainModel()
        {
            Perones = new List<Person>
            {
                new Person("Roman", 36),
                new Person("Olga", 8),
                new Person("Sofia", 40)
            };
        }

        public List<Person> Perones { get; }
    }
}
...
Рейтинг: 0 / 0
ItemsPanel
    #39525127
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я, по ошибке, искал решение в ItemsPanelTemplate. Думал, что всю декорацию можно создать там.
Спасибо за хороший, внятный пример и за участие.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / ItemsPanel
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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