powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataContent на XAML (WPF)
25 сообщений из 39, страница 1 из 2
DataContent на XAML (WPF)
    #39706837
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю возможно ли такое. Если да - подскажите как.
Примеры упрощённые для обучения.
Есть словарь с двумя определёнными списками
Dictionary1.xaml
Код: 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.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib"
                    xmlns:local="clr-namespace:DataContent_на_XAML___Wpf_">
 
    <col:ArrayList x:Key="ListMonths">
        <sys:String>Январь</sys:String>
        <sys:String>Февраль</sys:String>
        <sys:String>Март</sys:String>
        <sys:String>Апрель</sys:String>
        <sys:String>Май</sys:String>
        <sys:String>Июнь</sys:String>
        <sys:String>Июль</sys:String>
        <sys:String>Август</sys:String>
        <sys:String>Сентябрь</sys:String>
        <sys:String>Октябрь</sys:String>
        <sys:String>Ноябрь</sys:String>
        <sys:String>Декабрь</sys:String>
 
    </col:ArrayList>
    <col:ArrayList x:Key="ListDays">
        <sys:String>Понедельник</sys:String>
        <sys:String>Вторник</sys:String>
        <sys:String>Среда</sys:String>
        <sys:String>Четверг</sys:String>
        <sys:String>Пятница</sys:String>
        <sys:String>Суббота</sys:String>
        <sys:String>Воскресенье</sys:String>
    </col:ArrayList>
 
</ResourceDictionary>


Окно с двумя ListBox ссылающимися на эти списки
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<Window x:Class="DataContent_на_XAML___Wpf_.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:DataContent_на_XAML___Wpf_"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <ListBox ItemsSource="{Binding Mode=OneWay, Source={StaticResource ListDays}}" HorizontalAlignment="Center" VerticalAlignment="Top"  Margin="10"/>
        <ListBox ItemsSource="{Binding Mode=OneWay, Source={StaticResource ListMonths}}" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="10"/>
    </Grid>
</Window>


Можно ли это всё как-то переопределить - чтобы в DataContext окна сослаться на общий источник,
а потом в ListBox ссылаться только на имена списков. Что-то в таком духе (так не работает)
Код: xml
1.
2.
3.
4.
5.
6.
7.
<Window x:Class="DataContent_на_XAML___Wpf_.MainWindow"
 .........
        DataContext="{Binding StaticResource}" ..... >
...........
        <ListBox ..... ItemsSource="{Binding  ListDays}"/>
        <ListBox ........ ItemsSource="{Binding  ListMonths}"/>
 ..........


То есть получить, что-то аналогичное ссылке на источник и потом привязке к его свойствам.
Суть в том, что хочу сделать несколько источников в словаре.
В первоначальном варианте, надо при переключении наборов данных перебивать все привязки ItemsSorce элементов.
Мне было бы гораздо удобнее, если изменить только в одном месте DataContext.
Естественно, интересует как сделать это в XAML без кода C# - в учебных целям.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39706853
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну попробуйте запихнуть эти два массива еще в один массив и обращайтесь к элементам по индексу а в контексте переключайте сами массивы-хранилища.
Но в реальных приложениях так, конечно, не делают
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39706890
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, спасибо за ответ!
Вы имеете ввиду записать в словаре следующим образом?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    <col:ArrayList x:Key="List1">

        <col:ArrayList x:Key="ListMonths">
            <sys:String>Январь</sys:String>
 ...........
        </col:ArrayList>
        <col:ArrayList x:Key="ListDays">
            <sys:String>Понедельник</sys:String>
 ............
       </col:ArrayList>
    </col:ArrayList>


НО указать ключи у вложенных элементов невозможно (или я не знаю как).
Если же их не указывать, то каким образом указать привязки в ItemsSorce ?
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<Window x:Class= ................
     DataContext="{Binding Mode=OneWay, Source={StaticResource List1}}"
        ...............>
............
        <ListBox ItemsSource="{Binding ?????????}" ........./>
        <ListBox ItemsSource="{Binding ?????????}" ........./>
................
/Window>


Shocker.ProНо в реальных приложениях так, конечно, не делаютДа, согласен. Здесь цель несколько иная - учебная.
Допустим, при редактировании XAML окна - показываются элементы словаря (или другого XAML ресурса).
А в приложении привязка DataContext окна устанавливается на данные приложения.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39706897
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspНО указать ключи у вложенных элементов невозможно (или я не знаю как).
Если же их не указывать, то каким образом указать привязки в ItemsSorce ?Я же написал - обращение по индексу. Типа Item[0]. Только надо повспоминать/погуглить, как там обратиться к элементу массива, если мы и так в контексте массива
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39706900
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspЗдесь цель несколько иная - учебная.
Раз цель учебная, то лучше запихнуть все данные в XML, и использовать XmlDataProvider. У списков, соответственно, будут просто разные XPath в биндингах. Это несколько полезнее с практической т.з.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707015
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, я понял Вас об обращении по индексу. Но, насколько знаю, в XAML такое не возможно. Или я ошибаюсь?
Поэтому у Вас вторично, более конкретно, поинтересовался - "Что надо указать в привязке ItemsSource?"

Сон Веры Павловны, спасибо за внимание к моему вопросу.
Конечно можно сделать так
Файл DataXML.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Data>
  <ListMonths>
    <Month>Январь</Month>
    <Month>Февраль</Month>
    ...........
  </ListMonths>
  <ListDays>
    <Day>Понедельник</Day>
    <Day>Вторник</Day>
    ..........
  </ListDays>
</Data>


XAML
Код: xml
1.
2.
3.
4.
5.
6.
7.
    <Window.DataContext>
        <XmlDataProvider Source="DataXML.xml" XPath="Data" />
    </Window.DataContext>
    ..........
        <ListBox ItemsSource="{Binding  XPath=ListMonths/Month}" ........./>
        <ListBox ItemsSource="{Binding XPath=ListDays/Day}" ............/>
 ...........


Но использование XML - не решит данный вопрос так как мне хотелось бы.
Цели такие:
1. Имеется ли возможность это сделать средствами только XAML?
Может быть создать какой-нибудь дополнительный класс,
но чтобы он визуально отображался в XAML при редактировании?
Включая возможность изменения привязки DataContext из элемента WPF.
2. Если потом в приложении поменять Window.DataContext на источник с данными,
чтобы не пришлось менять привязки ItemsSource элементов окна.
С использованием XmlDataProvider привязки устанавливаются с помощью XPath,
а хотелось бы оставить их в виде {Binding Свойство}.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707024
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspНо, насколько знаю, в XAML такое не возможно. Или я ошибаюсь?ошибаетесь

Eld HaspМожет быть создать какой-нибудь дополнительный класс,
но чтобы он визуально отображался в XAML при редактировании?Это решение, которое напрашивается в качестве контейнера, но вы же сами запретили пользоваться C#
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707025
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProEld HaspМожет быть создать какой-нибудь дополнительный класс,
но чтобы он визуально отображался в XAML при редактировании?Это решение, которое напрашивается в качестве контейнера, но вы же сами запретили пользоваться C#Это и будет MVVM, под это и заточен WPF
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707078
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Binding можно использовать индексатор

ItemsSource="{Binding [0], Source={StaticResource MyRes}}"
ItemsSource="{Binding [1], Source={StaticResource MyRes}}"

Код: 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.
44.
45.
46.
<Window x:Class="WpfApp13.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:WpfApp13"
        xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <col:ArrayList x:Key="MyLists">
            <col:ArrayList>
                <sys:String>Январь</sys:String>
                <sys:String>Февраль</sys:String>
                <sys:String>Март</sys:String>
                <sys:String>Апрель</sys:String>
                <sys:String>Май</sys:String>
                <sys:String>Июнь</sys:String>
                <sys:String>Июль</sys:String>
                <sys:String>Август</sys:String>
                <sys:String>Сентябрь</sys:String>
                <sys:String>Октябрь</sys:String>
                <sys:String>Ноябрь</sys:String>
                <sys:String>Декабрь</sys:String>
            </col:ArrayList>
            <col:ArrayList>
                <sys:String>Понедельник</sys:String>
                <sys:String>Вторник</sys:String>
                <sys:String>Среда</sys:String>
                <sys:String>Четверг</sys:String>
                <sys:String>Пятница</sys:String>
                <sys:String>Суббота</sys:String>
                <sys:String>Воскресенье</sys:String>
            </col:ArrayList>
        </col:ArrayList>
    </Window.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <ListBox ItemsSource="{Binding [0], Mode=OneWay, Source={StaticResource MyLists}}" HorizontalAlignment="Center" VerticalAlignment="Top"  Margin="10"/>
        <ListBox ItemsSource="{Binding [1], Mode=OneWay, Source={StaticResource MyLists}}" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="10"/>
    </Grid>
</Window>



Думаю намекать на то, что индексатор может быть и строковым не нужно :)
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707100
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp1. Имеется ли возможность это сделать средствами только XAML?
Может быть создать какой-нибудь дополнительный класс,
но чтобы он визуально отображался в XAML при редактировании?
Разумеется:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<XmlDataProvider x:Key="XmlData">
  <x:XData>
    <root xmlns="">
      <MonthNames>
        <value>Январь</value>
        <value>Февраль</value>
        .............
        <value>Ноябрь</value>
        <value>Декабрь</value>
      </MonthNames>
      <DayNames>
        <value>Понедельник</value>
        <value>Вторник</value>
        .............
        <value>Суббота</value>
        <value>Воскресенье</value>
      </DayNames>
    </root>
  </x:XData>
</XmlDataProvider>


Eld Hasp2. Если потом в приложении поменять Window.DataContext на источник с данными,
чтобы не пришлось менять привязки ItemsSource элементов окна.
С использованием XmlDataProvider привязки устанавливаются с помощью XPath,
а хотелось бы оставить их в виде {Binding Свойство}.
В такой постановке задача сводится к десериализации кастомного объекта из XAML-разметки. Вариантов здесь 2: 1) xml-данные от провайдера, как было показано выше, плюс десериализация в конвертере; 2) Писать свой объект, в XAML прописывать заполнение всех его свойств.

Пример:
1. Данные:
Код: 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;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
using System.Xml;

namespace wpftest2
{
  public class MyWindowData
  {
    public MyWindowData()
    {
      MonthNames = new List<string>();
      DayNames = new List<string>();
    }

    public MyWindowData(XmlNode xdata)
    {
      var months = xdata.SelectNodes("/root/MonthNames/value/text()");
      MonthNames = months?.Cast<XmlText>().Select(n => n.Value).ToList();
      var days = xdata.SelectNodes("/root/DayNames/value/text()");
      DayNames = days?.Cast<XmlText>().Select(n => n.Value).ToList();
    }

    public List<string> MonthNames { get; }
    public List<string> DayNames { get; }
  }

  public class MyWindowDataConverter : IValueConverter
  {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
      if (!(value is IList<XmlNode> list) || !list.Any()) return null;
      return new MyWindowData(list[0]);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
      throw new NotImplementedException();
    }
  }
}


2. Словарь с данными:
Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
<ResourceDictionary
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:l="clr-namespace:wpftest2"
  xmlns:system="clr-namespace:System;assembly=mscorlib">

  <XmlDataProvider x:Key="XmlData">
    <x:XData>
      <root xmlns="">
        <MonthNames>
          <value>Январь</value>
          <value>Февраль</value>
          <value>Март</value>
          <value>Апрель</value>
          <value>Май</value>
          <value>Июнь</value>
          <value>Июль</value>
          <value>Август</value>
          <value>Сентябрь</value>
          <value>Октябрь</value>
          <value>Ноябрь</value>
          <value>Декабрь</value>
        </MonthNames>
        <DayNames>
          <value>Понедельник</value>
          <value>Вторник</value>
          <value>Среда</value>
          <value>Четверг</value>
          <value>Пятница</value>
          <value>Суббота</value>
          <value>Воскресенье</value>
        </DayNames>
      </root>
    </x:XData>
  </XmlDataProvider>

  <l:MyWindowData x:Key="MyWindowData">
    <l:MyWindowData.MonthNames>
      <system:String>Январь</system:String>
      <system:String>Февраль</system:String>
      <system:String>Март</system:String>
      <system:String>Апрель</system:String>
      <system:String>Май</system:String>
      <system:String>Июнь</system:String>
      <system:String>Июль</system:String>
      <system:String>Август</system:String>
      <system:String>Сентябрь</system:String>
      <system:String>Октябрь</system:String>
      <system:String>Ноябрь</system:String>
      <system:String>Декабрь</system:String>
    </l:MyWindowData.MonthNames>
    <l:MyWindowData.DayNames>
      <system:String>Понедельник</system:String>
      <system:String>Вторник</system:String>
      <system:String>Среда</system:String>
      <system:String>Четверг</system:String>
      <system:String>Пятница</system:String>
      <system:String>Суббота</system:String>
      <system:String>Воскресенье</system:String>
    </l:MyWindowData.DayNames>
  </l:MyWindowData>
</ResourceDictionary>


3. Фрагмент App.xaml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="/wpftest2;component/XData.xaml" />
    </ResourceDictionary.MergedDictionaries>
    <wpftest2:MyWindowDataConverter x:Key="MyWindowDataConverter" />
  </ResourceDictionary>
</Application.Resources>


4. Разметка окна:
Код: 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.
<Window
  x:Class="wpftest2.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"
  mc:Ignorable="d"
  WindowStartupLocation="CenterScreen"
  DataContext="{StaticResource MyWindowData}"
  Title="MainWindow" Height="350" Width="525">

  <Grid>
    <Grid.ColumnDefinitions>
      <ColumnDefinition />
      <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <ListBox
      Margin="5"
      ItemsSource="{Binding MonthNames}" />
    <ListBox
      Grid.Column="1"
      Margin="5"
      ItemsSource="{Binding DayNames}" />
  </Grid>
</Window>


Соответственно, можно датаконтекст окна переключить на
Код: sql
1.
DataContext="{Binding Source={StaticResource XmlData}, Converter={StaticResource MyWindowDataConverter}}"


Мне вариант с XML-десериализацией в конвертере нравится больше - выглядит изящнее, и дает возможность использовать десериализацию с помощью XmlSerializer (а для возможности автоматической десериализации объекта из XAML накладывается слишком много всяких ограничений - например, возврат конкретной реализации (List<T>) вместо интерфейса является следствием этих ограничений).
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707101
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesBinding [0]Вот прям так втупую path начинается с квадратной скобки?
Я просто сам поленился попробовать, но думал, что надо использовать что-то типа Item, потому что где-то мне приходилось его использовать, но не помню где.

Roman MejtesДумаю намекать на то, что индексатор может быть и строковым не нужно :)А как это поможет (если на C# мораторий)? Использовать какой-то необобщенный словарь в качестве хранилища?
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707119
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЭто решение, которое напрашивается в качестве контейнера, но вы же сами запретили пользоваться C#Я хочу избежать этого, если возможно.
И в любом случае, если создавать такой дополнительный класс, то надо чтобы он отображал свои значения во время редактирования XAML.
То есть создать класс, а объект (экземпляр) этого класс создать в XAML и там же присваивать ему значения.
Но я плохо владею этой частью. Так что - это смутные мысли по моему представлению.
Если можете - подскажите.

Roman Mejtes,в Binding можно использовать индексаторСпасибо!
Не знал. Подсказал Shocker.Pro - но я не понял как.
Пробовал указывать просто номер индекса, а что-то вариант указания со скобками в голову не пришёл.
Переделал так.
Код: xml
1.
2.
3.
4.
5.
6.
7.
<Window x:Class=..............
        DataContext="{Binding Mode=OneWay, Source={StaticResource MyLists}}">
..............
        <ListBox ItemsSource="{Binding [0]}"  ...................../>
        <ListBox ItemsSource="{Binding [1]}" ................./>
.................
</Window>


Уже ближе к тому чего добиваюсь.
Но хотелось бы, если возможно, вариант с указанием ключей/свойств.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707120
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspТо есть создать класс, а объект (экземпляр) этого класс создать в XAML и там же присваивать ему значения.
Но я плохо владею этой частью. Так что - это смутные мысли по моему представлению.
Если можете - подскажите.
Выше же пример именно это и делает.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707127
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныВ такой постановке задача сводится к десериализации кастомного объекта из XAML-разметки. Если я правильно понял. То создать по объекту XML данные и их привязывать к DataContext.
Получится несколько наборов XML данных - для времени редактирования и исполнения. И возможность переключения между ними.
Я правильно понял?
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707131
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspИ в любом случае, если создавать такой дополнительный класс, то надо чтобы он отображал свои значения во время редактирования XAML.Зачем ему отображать СВОИ значения. Вы сделаете контейнер, а значения будете ЗАДАВАТЬ в XAML. Фактически заменить ArrayList на собственный контейнер, все остальное - то же самое.

По идее, можно попробовать с ListDictionary - задавать ключи с помощью x:Key, а обращаться к ним через индексатор. Тогда может прокатит без кода на C#
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707133
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сон Веры ПавловныВыше же пример именно это и делает. Ещё не успел разобраться с ним - только смотрю.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707135
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПо идее, можно попробовать с ListDictionary - задавать ключи с помощью x:Key, а обращаться к ним через индексатор. Тогда может прокатит без кода на C#типа так, как вы и хотели изначально
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    <col:ListDictionary x:Key="List1">

        <col:ArrayList x:Key="ListMonths">
            <sys:String>Январь</sys:String>
 ...........
        </col:ArrayList>
        <col:ArrayList x:Key="ListDays">
            <sys:String>Понедельник</sys:String>
 ............
       </col:ArrayList>
    </col:ArrayList>
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707136
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЗачем ему отображать СВОИ значения. Вы сделаете контейнер, а значения будете ЗАДАВАТЬ в XAML. Фактически заменить ArrayList на собственный контейнер, все остальное - то же самое.

По идее, можно попробовать с ListDictionary - задавать ключи с помощью x:Key, а обращаться к ним через индексатор. Тогда может прокатит без кода на C#Очень смутно в этой части (как создать и использовать свой контейнер) соображаю. Поэтому и обратился за помощью.
Ключи во вложенных элементах ArrayList задать не получается, или я что-то не правильно делаю.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707138
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspОчень смутно в этой части (как создать и использовать свой контейнер) соображаю. Поэтому и обратился за помощью.
обычный POCO класс с двумя коллекциями
Код: c#
1.
2.
3.
4.
5.
public class MyContainer
{
  public List<string> ListMonths {get;set;}
  public List<string> ListDays {get;set;}
}
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707139
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspКлючи во вложенных элементах ArrayList задать не получается, или я что-то не правильно делаю.Выше пример с ListDictionary, правда я не пробовал
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707147
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proобычный POCO класс с двумя коллекциями ..............А как его использовать в XAML?
Класс создал в локальном пространстве, но с префиксом local: его не видно.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707152
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proтипа так, как вы и хотели изначально
Код: xml
1.
    <col:ListDictionary x:Key="List1">


У меня на этой строчке ошибку выдаёт " Не удалось найти тип "col:ListDictionary"....".
Может какие-то ссылки подключить надо?
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707165
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня впечатление складывается, что вы не почитали литературу по WPF, а пытаетесь все делать методом тыка. Не получится. Освойте неймспейсы, чтобы аббревиатура xmlns не казалась вам абракадаброй
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707182
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro...... чтобы аббревиатура xmlns не казалась вам абракадабройНе спорю - порой кажется.
Но в данном случае col у меня ссылается на "clr-namespace:System.Collections;assembly=mscorlib"
ArrayList из этого же пространства.
ListDictionary - из пространства System.Collections.Specialized. И по префиксу col - он не находится.
Поэтому не пойму, то ли я что-то не так делаю.
Толи ещё надо префиксы определить?
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707187
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspShocker.Proобычный POCO класс с двумя коллекциями ..............А как его использовать в XAML?
Класс создал в локальном пространстве, но с префиксом local: его не видно.
Сон Веры ПавловныВыше же пример именно это и делает.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataContent на XAML (WPF)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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