powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF : Listview и DataTemplate
25 сообщений из 37, страница 1 из 2
WPF : Listview и DataTemplate
    #36190484
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помогите плз разобраться :
на форме Listview (View = myGridView)
так добавляю столбцы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
for (byte i = 0; i <= 11; i++)
   {
      myGridView.Columns.Add(new GridViewColumn());
      myGridView.Columns[i].DisplayMemberBinding = new System.Windows.Data.Binding("[" + i + "]");
      DataTemplate template = new DataTemplate(typeof(string));                        
      FrameworkElementFactory factoryTextBlock = new FrameworkElementFactory(typeof(TextBlock));
      //factoryTextBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);
      factoryTextBlock.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
      factoryTextBlock.SetValue(TextBlock.ForegroundProperty, Brushes.Black);
      factoryTextBlock.SetBinding(TextBlock.TextProperty, new Binding("Value"));
      template.VisualTree = factoryTextBlock;
      myGridView.Columns[i].CellTemplate = template;                        
   }
   myGridView.Columns[0].Header = "месяц";
   ...
и заполняю данными
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
   {
      cn.Open();
      da.Fill(tbl);
      cn.Close();
      myListView.ItemsSource = tbl.Rows;
   }
получается
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36190488
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нужно
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36190491
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощения второй рисунок не обрезал, те не получатся задать форматирование грида, что я не так делаю? только без XAML plz
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36190629
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоесть нужен аналог в WPF на C# этим строкам на Vb.net для WinWorms
Код: plaintext
1.
2.
Me.DataGridView1.Columns.Item(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
Me.DataGridView1.Columns.Item(6).DefaultCellStyle.Format = "N1"
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36190687
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okтоесть нужен аналог в WPF на C# этим строкам на Vb.net для WinWorms
Код: plaintext
1.
2.
Me.DataGridView1.Columns.Item(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
Me.DataGridView1.Columns.Item(6).DefaultCellStyle.Format = "N1"

Читаем http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx] здесь и думаем, почему не нужен аналог строкам.
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36190696
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eще http://msdn.microsoft.com/en-us/library/ms752347.aspxздесь. Читаем.
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36190702
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eще здесь . Читаем.
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36193907
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
for (byte i = 0; i <= 11; i++)
   {                        
      myGridView.Columns.Add(new GridViewColumn());
      myGridView.Columns[i].DisplayMemberBinding = new Binding("[" + i + "]");                        
   }                    
myGridView.Columns[0].Header = "месяц";
DataTemplate template1 = new DataTemplate(typeof(string));                   
FrameworkElementFactory factoryTextBlock1 = new FrameworkElementFactory(typeof(TextBlock));
factoryTextBlock1.SetValue(TextBlock.ForegroundProperty, Brushes.Red);
factoryTextBlock1.SetValue(TextBlock.BackgroundProperty, Brushes.Blue);
template1.VisualTree = factoryTextBlock1;
myGridView.Columns[0].CellTemplate = template1;
почему цвет текста не ред и фон не блуе?
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36193913
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6ok,

вторую неделю не могу отформотировать строку - дым с головы, помогите плз
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36194809
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему текст не выравнивается по правому краю? что я не так делаю?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
for (byte i = 0; i <= 11; i++)
   {                        
      myGridView.Columns.Add(new GridViewColumn());
      DataTemplate template = new DataTemplate(typeof(Grid));
      FrameworkElementFactory factorySP = new FrameworkElementFactory(typeof(StackPanel));
      factorySP.SetValue(Grid.BackgroundProperty, Brushes.Blue);
      factorySP.SetValue(Grid.HorizontalAlignmentProperty, HorizontalAlignment.Right);                        
      FrameworkElementFactory factoryTextBlock = new FrameworkElementFactory(typeof(TextBlock));
      factoryTextBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);
      factoryTextBlock.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
      factoryTextBlock.SetValue(TextBlock.ForegroundProperty, Brushes.White);
      factoryTextBlock.SetBinding(TextBlock.TextProperty, new Binding("[" + i + "]"));
      factorySP.AppendChild(factoryTextBlock);
      template.VisualTree = factorySP;
      myGridView.Columns[i].CellTemplate = template;                        
   }
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36195066
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чарльз Петцольд, Microsoft WPF базовый курс, 2008 г., стр 377-378
"Вторая версия программы также исправляет небольшую проблемму со вторым столбцом. Поскольку в нем выводтся разнотипные данные, содержимое стоит выровнять по правому краю. Тем не менее вместо настройки выравнивания на уровне столбцов в программе используется более общее решение на базе щаблонов.
Эта версия программы создает объект ДатаТемплате, инициализирует его визуальным деревом с выравниванием объектов ТекстБокс по правлму краю, после чего задает его свойству СеллТемплате второго объекта GridViewColumn"
Код: plaintext
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Input;
using System.Windows.Media;
using System.Linq;
using System.Text;

namespace cl_fil
{

    public class SystemParam
    {
        string strName;
        object objValue;

        public string Name
        {
            set { strName = value; }
            get { return strName; }
        }

        public object Value
        {
            set { objValue = value; }
            get { return objValue; }
        }

        public override string ToString()
        {
            return Name + "=" + Value;
        }
    }

    class test : Window
    {
        [STAThread]
        public static void Main()
        {
            Application app = new Application();
            app.Run(new test());
        }

        public test()
        {
            Title = "asdad";
            ListView lv = new ListView();
            this.Content = lv;

            GridView gv = new GridView();
            lv.View = gv;

            GridViewColumn col = new GridViewColumn();
            col.Header = "name";
            col.DisplayMemberBinding = new Binding("Name");
            gv.Columns.Add(col);
            col = new GridViewColumn();
            col.Header = "Value";
            col.Width = 200;
            gv.Columns.Add(col);

            DataTemplate template = new DataTemplate(typeof(string));
            FrameworkElementFactory factoryTXT = new FrameworkElementFactory(typeof(TextBlock));
            factoryTXT.SetValue(TextBlock.HorizontalAlignmentProperty,HorizontalAlignment.Right);
            factoryTXT.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
            factoryTXT.SetValue(TextBlock.TextProperty, new Binding("Value"));
            template.VisualTree = factoryTXT;
            col.CellTemplate = template;

            PropertyInfo[] props = typeof(SystemParameters).GetProperties();

            SortedList<string, SystemParam> sortlist = new SortedList<string, SystemParam>();

            foreach (PropertyInfo prop in props)
            {
                if (prop.PropertyType != typeof(ResourceKey))
                {
                    SystemParam sp = new SystemParam();
                    sp.Name = prop.Name;
                    sp.Value = prop.GetValue(null, null);
                    sortlist.Add(prop.Name, sp);
                }
            }

            lv.ItemsSource = sortlist.Values;
        }
    }
}

он что тоже не знает как выровнять текст по правому краю? :)
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36195479
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okон что тоже не знает как выровнять текст по правому краю? :)
А разве TextBlock не по правому краю выровнен?
Тебе это не видно потому, что TextBlock имеет размер равный размеру текста в нем, если явно не указано другое поведение:

Код: plaintext
1.
2.
3.
4.
            factoryTXT.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
            factoryTXT.SetValue(TextBlock.TextProperty, new Binding("Value"));
            factoryTXT.SetValue(FrameworkElement.MinWidthProperty, 200.0);
            template.VisualTree = factoryTXT;
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36197247
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. Golubin,
большое спасибо - сам бы еще неделю мучался :)
сделал так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DataTemplate template;
for (byte i = 0; i <= 11; i++)
   {                        
      myGridView.Columns.Add(new GridViewColumn());                        
      template = new DataTemplate(typeof(string));                                           
      FrameworkElementFactory factoryTXT = new FrameworkElementFactory(typeof(TextBlock));
      if (i == 0)
         {
            factoryTXT.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Left);
            factoryTXT.SetValue(TextBlock.MinWidthProperty, 50.0);
         }
      else
         {
            factoryTXT.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
            factoryTXT.SetValue(TextBlock.MinWidthProperty, 75.0);
         }
            factoryTXT.SetBinding(TextBlock.TextProperty, new Binding("[" + i + "]"));                        
            template.VisualTree = factoryTXT;
            myGridView.Columns[i].CellTemplate = template;                        
   }
на первое время сойдет, но эт не очень хороший вариант - в некоторых столбцах остается пустое место, а его и так в обрез :(
а как отформатировать числа?
на VB делал
Код: plaintext
1.
2.
3.
Me.DataGridView1.Columns.Item(6).DefaultCellStyle.Format = "N1"
или
FormatNumber(mass_v(i), 1, TriState.True, TriState.False, TriState.True)
а тут как быть?
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36197881
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okна первое время сойдет, но эт не очень хороший вариант - в некоторых столбцах остается пустое место, а его и так в обрез :(
MinWidthProperty - это был всего лишь пример, что бы показать где проблема :) По правильному, надо его синхронизировать с размером контейнера. То есть, переписать MeasureOverride и ArrangeOverride для контейнера, в котором содержится TextBlock. В результате уходим в процесс создания своего контрола - оно тебе нужно? :)
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36200275
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. Golubin,

идея ясна, спасибо - хороший ты хлопец или дядька
так а как форматировать числа мои с DataTable? как ни кручу их а они без разделителей разрядов
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36201444
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему так получается?
Код: plaintext
1.
2.
3.
bind = new Binding("[" + i + "]");
bind.StringFormat = "n1";
factoryTXT.SetBinding(TextBlock.TextProperty, bind);
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
[STAThread]
public static void Main()
   {
      Application app = new Application();
      app.ShutdownMode = ShutdownMode.OnLastWindowClose;            
      NumberFormatInfo myNumberFormatInfo = new NumberFormatInfo();
      CultureInfo myCulture = new CultureInfo("ru-Ru");
      myCulture.NumberFormat.NumberDecimalSeparator = ",";
      myCulture.NumberFormat.NumberGroupSeparator = " ";
      Thread.CurrentThread.CurrentCulture = myCulture;
      app.Run(new forms.frm_login());
   }
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36203425
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все таки я её поборол :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class myConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return string.Format("{0:N1}", value);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }    

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
factoryTXT.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);
factoryTXT.SetValue(TextBlock.MinWidthProperty, 75.0);
bind = new Binding("[" + i + "]")
   {
      Converter = new myConverter()
   };                     
factoryTXT.SetBinding(TextBlock.TextProperty, bind);
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36210182
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при открытии формы данные в TextBox форматируются как надо, но если вводить новые значения то формат строки не соблюдается конечно, как это дело можно поправить?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
TextBox myTextFakt_2006 = new TextBox();
myTextFakt_2006.TextAlignment = TextAlignment.Right;
myTextFakt_2006.DataContext = _row; //DataRow
bind = new Binding("[2]")
   {
      Converter = new myConverter()
   };
myTextFakt_2006.SetBinding(TextBox.TextProperty, bind);
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class myConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return string.Format("{0:N1}", value);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return System.Convert.ToDecimal(value);
        }
    }    
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36278227
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. Golubin
Читаем http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx] здесь и думаем, почему не нужен аналог строкам.
ну наконец-то!!!!!!!!!! я так рад я так рад
и до меня дошло про что статья для чего это нужно и как пользоваться
прикрутил себе - сказка! намного стало проще, удобней, меньше работы
зы спасибо!!!
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36278541
Фотография aleks-sam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koJIo6okRoman S. Golubin
Читаем http://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx] здесь и думаем, почему не нужен аналог строкам.
ну наконец-то!!!!!!!!!! я так рад я так рад
и до меня дошло про что статья для чего это нужно и как пользоваться
прикрутил себе - сказка! намного стало проще, удобней, меньше работы
зы спасибо!!!
Вот в этой книге все расписано. Она конечно не ориентирована на узкую специфику привязки данных и т.п., но все же ясно и прозрачно описано.

В инете полно в djvu формате
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36297646
Фотография pion3r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как было сделано фиксирование нижней строки в гридвьюв ?
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36297718
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pion3rКак было сделано фиксирование нижней строки в гридвьюв ?
вы про что? и на название контрола по английски и полностью пишите, а то можем про разные вестчи говорить
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36297749
Фотография pion3r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас в Вашем GridView есть внизу фиксированная строка "Итого" я так понимаю ? Если да, то как вы ее делали фиксированной ?
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36298174
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pion3r,
есть строка итого, а как же без неё только я не пойму что значит фиксированная?
...
Рейтинг: 0 / 0
WPF : Listview и DataTemplate
    #36346665
koJIo6ok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks-sam
Вот в этой книге все расписано. Она конечно не ориентирована на узкую специфику привязки данных и т.п., но все же ясно и прозрачно описано.
В инете полно в djvu формате
ну да помогло, спасибо + отсюда очень понравилось про RoutedCommand, теперь все кнопки где нужна проверка какая-нибудь через эту вестчь - сказка просто, рекомендую
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF : Listview и DataTemplate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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