Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Не знаю возможно ли такое. Если да - подскажите как.
Примеры упрощённые для обучения.
Есть словарь с двумя определёнными списками
Dictionary1.xaml
<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 ссылающимися на эти списки
<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 ссылаться только на имена списков. Что-то в таком духе (так не работает)
<Window x:Class="DataContent_на_XAML___Wpf_.MainWindow"
 .........
        DataContext="{Binding StaticResource}" ..... >
...........
        <ListBox ..... ItemsSource="{Binding  ListDays}"/>
        <ListBox ........ ItemsSource="{Binding  ListMonths}"/>
 ..........

То есть получить, что-то аналогичное ссылке на источник и потом привязке к его свойствам.
Суть в том, что хочу сделать несколько источников в словаре.
В первоначальном варианте, надо при переключении наборов данных перебивать все привязки ItemsSorce элементов.
Мне было бы гораздо удобнее, если изменить только в одном месте DataContext.
Естественно, интересует как сделать это в XAML без кода C# - в учебных целям.
24 сен 18, 11:07    [21683654]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Ну попробуйте запихнуть эти два массива еще в один массив и обращайтесь к элементам по индексу а в контексте переключайте сами массивы-хранилища.
Но в реальных приложениях так, конечно, не делают
24 сен 18, 11:24    [21683686]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro, спасибо за ответ!
Вы имеете ввиду записать в словаре следующим образом?
    <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 ?
<Window x:Class= ................
     DataContext="{Binding Mode=OneWay, Source={StaticResource List1}}"
        ...............>
............
        <ListBox ItemsSource="{Binding ?????????}" ........./>
        <ListBox ItemsSource="{Binding ?????????}" ........./>
................
/Window>

Shocker.Pro
Но в реальных приложениях так, конечно, не делают
Да, согласен. Здесь цель несколько иная - учебная.
Допустим, при редактировании XAML окна - показываются элементы словаря (или другого XAML ресурса).
А в приложении привязка DataContext окна устанавливается на данные приложения.
24 сен 18, 12:00    [21683755]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Eld Hasp
НО указать ключи у вложенных элементов невозможно (или я не знаю как).
Если же их не указывать, то каким образом указать привязки в ItemsSorce ?
Я же написал - обращение по индексу. Типа Item[0]. Только надо повспоминать/погуглить, как там обратиться к элементу массива, если мы и так в контексте массива
24 сен 18, 12:07    [21683763]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 4710
Eld Hasp
Здесь цель несколько иная - учебная.

Раз цель учебная, то лучше запихнуть все данные в XML, и использовать XmlDataProvider. У списков, соответственно, будут просто разные XPath в биндингах. Это несколько полезнее с практической т.з.
24 сен 18, 12:11    [21683766]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro, я понял Вас об обращении по индексу. Но, насколько знаю, в XAML такое не возможно. Или я ошибаюсь?
Поэтому у Вас вторично, более конкретно, поинтересовался - "Что надо указать в привязке ItemsSource?"

Сон Веры Павловны, спасибо за внимание к моему вопросу.
Конечно можно сделать так
Файл DataXML.xml
<Data>
  <ListMonths>
    <Month>Январь</Month>
    <Month>Февраль</Month>
    ...........
  </ListMonths>
  <ListDays>
    <Day>Понедельник</Day>
    <Day>Вторник</Day>
    ..........
  </ListDays>
</Data>

XAML
    <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 Свойство}.
24 сен 18, 14:12    [21684017]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Eld Hasp
Но, насколько знаю, в XAML такое не возможно. Или я ошибаюсь?
ошибаетесь

Eld Hasp
Может быть создать какой-нибудь дополнительный класс,
но чтобы он визуально отображался в XAML при редактировании?
Это решение, которое напрашивается в качестве контейнера, но вы же сами запретили пользоваться C#
24 сен 18, 14:17    [21684031]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Shocker.Pro
Eld Hasp
Может быть создать какой-нибудь дополнительный класс,
но чтобы он визуально отображался в XAML при редактировании?
Это решение, которое напрашивается в качестве контейнера, но вы же сами запретили пользоваться C#
Это и будет MVVM, под это и заточен WPF
24 сен 18, 14:17    [21684034]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3305
в Binding можно использовать индексатор

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

<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>


Думаю намекать на то, что индексатор может быть и строковым не нужно :)
24 сен 18, 14:53    [21684124]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 4710
Eld Hasp
1. Имеется ли возможность это сделать средствами только XAML?
Может быть создать какой-нибудь дополнительный класс,
но чтобы он визуально отображался в XAML при редактировании?

Разумеется:
<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 Hasp
2. Если потом в приложении поменять Window.DataContext на источник с данными,
чтобы не пришлось менять привязки ItemsSource элементов окна.
С использованием XmlDataProvider привязки устанавливаются с помощью XPath,
а хотелось бы оставить их в виде {Binding Свойство}.

В такой постановке задача сводится к десериализации кастомного объекта из XAML-разметки. Вариантов здесь 2: 1) xml-данные от провайдера, как было показано выше, плюс десериализация в конвертере; 2) Писать свой объект, в XAML прописывать заполнение всех его свойств.

Пример:
1. Данные:
+
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. Словарь с данными:
+
<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:
+
<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="/wpftest2;component/XData.xaml" />
    </ResourceDictionary.MergedDictionaries>
    <wpftest2:MyWindowDataConverter x:Key="MyWindowDataConverter" />
  </ResourceDictionary>
</Application.Resources>

4. Разметка окна:
+
<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>

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

Мне вариант с XML-десериализацией в конвертере нравится больше - выглядит изящнее, и дает возможность использовать десериализацию с помощью XmlSerializer (а для возможности автоматической десериализации объекта из XAML накладывается слишком много всяких ограничений - например, возврат конкретной реализации (List<T>) вместо интерфейса является следствием этих ограничений).
24 сен 18, 15:05    [21684155]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Roman Mejtes
Binding [0]
Вот прям так втупую path начинается с квадратной скобки?
Я просто сам поленился попробовать, но думал, что надо использовать что-то типа Item, потому что где-то мне приходилось его использовать, но не помню где.

Roman Mejtes
Думаю намекать на то, что индексатор может быть и строковым не нужно :)
А как это поможет (если на C# мораторий)? Использовать какой-то необобщенный словарь в качестве хранилища?
24 сен 18, 15:05    [21684156]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro
Это решение, которое напрашивается в качестве контейнера, но вы же сами запретили пользоваться C#
Я хочу избежать этого, если возможно.
И в любом случае, если создавать такой дополнительный класс, то надо чтобы он отображал свои значения во время редактирования XAML.
То есть создать класс, а объект (экземпляр) этого класс создать в XAML и там же присваивать ему значения.
Но я плохо владею этой частью. Так что - это смутные мысли по моему представлению.
Если можете - подскажите.

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

Уже ближе к тому чего добиваюсь.
Но хотелось бы, если возможно, вариант с указанием ключей/свойств.
24 сен 18, 15:27    [21684199]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 4710
Eld Hasp
То есть создать класс, а объект (экземпляр) этого класс создать в XAML и там же присваивать ему значения.
Но я плохо владею этой частью. Так что - это смутные мысли по моему представлению.
Если можете - подскажите.

Выше же пример именно это и делает.
24 сен 18, 15:31    [21684202]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Сон Веры Павловны
В такой постановке задача сводится к десериализации кастомного объекта из XAML-разметки.
Если я правильно понял. То создать по объекту XML данные и их привязывать к DataContext.
Получится несколько наборов XML данных - для времени редактирования и исполнения. И возможность переключения между ними.
Я правильно понял?
24 сен 18, 15:35    [21684209]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Eld Hasp
И в любом случае, если создавать такой дополнительный класс, то надо чтобы он отображал свои значения во время редактирования XAML.
Зачем ему отображать СВОИ значения. Вы сделаете контейнер, а значения будете ЗАДАВАТЬ в XAML. Фактически заменить ArrayList на собственный контейнер, все остальное - то же самое.

По идее, можно попробовать с ListDictionary - задавать ключи с помощью x:Key, а обращаться к ним через индексатор. Тогда может прокатит без кода на C#
24 сен 18, 15:37    [21684213]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Сон Веры Павловны
Выше же пример именно это и делает.
Ещё не успел разобраться с ним - только смотрю.
24 сен 18, 15:38    [21684216]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Shocker.Pro
По идее, можно попробовать с ListDictionary - задавать ключи с помощью x:Key, а обращаться к ним через индексатор. Тогда может прокатит без кода на C#
типа так, как вы и хотели изначально
    <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>
24 сен 18, 15:41    [21684220]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro
Зачем ему отображать СВОИ значения. Вы сделаете контейнер, а значения будете ЗАДАВАТЬ в XAML. Фактически заменить ArrayList на собственный контейнер, все остальное - то же самое.

По идее, можно попробовать с ListDictionary - задавать ключи с помощью x:Key, а обращаться к ним через индексатор. Тогда может прокатит без кода на C#
Очень смутно в этой части (как создать и использовать свой контейнер) соображаю. Поэтому и обратился за помощью.
Ключи во вложенных элементах ArrayList задать не получается, или я что-то не правильно делаю.
24 сен 18, 15:42    [21684221]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Eld Hasp
Очень смутно в этой части (как создать и использовать свой контейнер) соображаю. Поэтому и обратился за помощью.

обычный POCO класс с двумя коллекциями
public class MyContainer
{
  public List<string> ListMonths {get;set;}
  public List<string> ListDays {get;set;}
}
24 сен 18, 15:44    [21684227]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Eld Hasp
Ключи во вложенных элементах ArrayList задать не получается, или я что-то не правильно делаю.
Выше пример с ListDictionary, правда я не пробовал
24 сен 18, 15:45    [21684229]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro
обычный POCO класс с двумя коллекциями ..............
А как его использовать в XAML?
Класс создал в локальном пространстве, но с префиксом local: его не видно.
24 сен 18, 15:53    [21684245]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro
типа так, как вы и хотели изначально
    <col:ListDictionary x:Key="List1">

У меня на этой строчке ошибку выдаёт " Не удалось найти тип "col:ListDictionary"....".
Может какие-то ссылки подключить надо?
24 сен 18, 15:57    [21684254]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
У меня впечатление складывается, что вы не почитали литературу по WPF, а пытаетесь все делать методом тыка. Не получится. Освойте неймспейсы, чтобы аббревиатура xmlns не казалась вам абракадаброй
24 сен 18, 16:07    [21684277]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro
...... чтобы аббревиатура xmlns не казалась вам абракадаброй
Не спорю - порой кажется.
Но в данном случае col у меня ссылается на "clr-namespace:System.Collections;assembly=mscorlib"
ArrayList из этого же пространства.
ListDictionary - из пространства System.Collections.Specialized. И по префиксу col - он не находится.
Поэтому не пойму, то ли я что-то не так делаю.
Толи ещё надо префиксы определить?
24 сен 18, 16:28    [21684325]     Ответить | Цитировать Сообщить модератору
 Re: DataContent на XAML (WPF)  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 4710
Eld Hasp
Shocker.Pro
обычный POCO класс с двумя коллекциями ..............
А как его использовать в XAML?
Класс создал в локальном пространстве, но с префиксом local: его не видно.

Сон Веры Павловны
Выше же пример именно это и делает.
24 сен 18, 16:34    [21684336]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / WPF, Silverlight Ответить