powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Выравнивание содержимого в TextBlock
2 сообщений из 2, страница 1 из 1
Выравнивание содержимого в TextBlock
    #37730926
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть код:
Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
public class ListSortedSystemParameters : Window
    {
        [STAThread]
        public static void Main()
        {
            Application app = new Application();
            app.Run(new ListSortedSystemParameters());
        }
        public ListSortedSystemParameters()
        {
            Title = "List Sorted System Parameters";

            // Create a ListView as content of the window.
            ListView lstvue = new ListView();
            Content = lstvue;

            // Create a GridView as the View of the ListView.
            GridView grdvue = new GridView();
            lstvue.View = grdvue;

            // Create two GridView columns.
            GridViewColumn col = new GridViewColumn();
            col.Header = "Property Name";
            col.Width = 200;
            col.DisplayMemberBinding = new Binding("Name");
            grdvue.Columns.Add(col);

            col = new GridViewColumn();
            col.Header = "Value";
            col.Width = 200;
            grdvue.Columns.Add(col);

            // Create DataTemplate for second column.
            DataTemplate template = new DataTemplate(typeof(string));
            FrameworkElementFactory factoryTextBlock = new FrameworkElementFactory(typeof(TextBlock));
            //factoryTextBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Left);
            factoryTextBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);
            factoryTextBlock.SetBinding(TextBlock.TextProperty, new Binding("Value"));
            template.VisualTree = factoryTextBlock;
            col.CellTemplate = template;

            // Get all the system parameters in one handy array.
            PropertyInfo[] props = typeof(SystemParameters).GetProperties();

            // Create a SortedList to hold the SystemParam objects.
            SortedList<string, SystemParam> sortlist =
                                    new SortedList<string, SystemParam>();

            // Fill up the SortedList from the PropertyInfo array.
            foreach (PropertyInfo prop in props)
                if (prop.PropertyType != typeof(ResourceKey))
                {
                    SystemParam sysparam = new SystemParam();
                    sysparam.Name = prop.Name;
                    sysparam.Value = prop.GetValue(null, null);
                    sortlist.Add(prop.Name, sysparam);
                }

            // Set the ItemsSource property of the ListView.
            lstvue.ItemsSource = sortlist.Values;
        }
    }



о котором автор в числе прочего говорит:
"...Поскольку в нем выводятся разнотипные данные, содержимое стоит выровнять по правому краю. Тем не менее вместо настройки выравнивания на уровне столбцов в программе используется более общее решение на уровне шаблонов...".
Как я понял он собирается это сделать строчкой factoryTextBlock.SetValue(TextBlock.HorizontalAlignmentProperty, HorizontalAlignment.Right);. Однако содержимое всегда остается выровненным по левому краю, какое бы значение HorizontalAlignment не был указано. Если почитать описание свойства TextBlock.HorizontalAlignment в нем говорится что "Возвращает или задает горизонтальные характеристики выравнивания, примененные к данному элементу при его создании в родительском элементе, например панели или коллекции элементов. Это свойство зависимостей." То есть речь идет о выравнивании элемента, а не содержимого в нем.
Так как же в этом коде добиться выравнивания именно содержимого во втором столбце?
...
Рейтинг: 0 / 0
Выравнивание содержимого в TextBlock
    #37731416
Lexxxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
factoryTextBlock.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right);


тоже не приводит к какому либо результату. Как выровнять текст во втором столбце по правому краю?
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Выравнивание содержимого в TextBlock
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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