powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataContent на XAML (WPF)
14 сообщений из 39, страница 2 из 2
DataContent на XAML (WPF)
    #39707196
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld HaspListDictionary - из пространства System.Collections.Specialized. И по префиксу col - он не находится.
Поэтому не пойму, то ли я что-то не так делаю.
Толи ещё надо префиксы определить?Вы сами себе ответили. Только не надо называть пространства имен префиксами - вас не поймут.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707220
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProEld HaspListDictionary - из пространства System.Collections.Specialized ....
Толи ещё надо префиксы определить?Вы сами себе ответили. Только не надо называть пространства имен префиксами - вас не поймут.Если б так просто всё было....
Может я конкретно туплю, не то делаю.
Я понимаю надо подключить пространство имён. Сделал так
xmlns:cols="clr-namespace:System.Collections.Specialized;assembly=mscorlib"
Но пространство не подключается. На строке <cols:ListDictionary x:Key="List1"> всё равно ошибка.
В коде, если указать using System.Collections.Specialized; тип ListDictionary появляется.
В XAML - ни как! По идее после <cols:, если нажать Ctrl+Пробел должен выйти список элементов. Тоже не выходит.
Ни как понять не могу, что не так делаю.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707229
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому, что класс ListDictionary это класс сборки System, а не mscorlib

Неправильно:
clr-namespace:System.Collections.Specialized;assembly=mscorlib
Правильно:
clr-namespace:System.Collections.Specialized;assembly=System

пример:
Код: 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:col="clr-namespace:System.Collections;assembly=mscorlib"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        xmlns:spc="clr-namespace:System.Collections.Specialized;assembly=System"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <spc:ListDictionary x:Key="MyDict">
            <col:ArrayList x:Key="MyList1">
                <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="MyList2">
                <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>
        </spc:ListDictionary>
    </Window.Resources>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <ListBox ItemsSource="{Binding [MyList1], Mode=OneWay, Source={StaticResource MyDict}}" HorizontalAlignment="Center" VerticalAlignment="Top"  Margin="10"/>
        <ListBox ItemsSource="{Binding [MyList2], Mode=OneWay, Source={StaticResource MyDict}}" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="10"/>
    </Grid>
</Window>
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707932
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Roman MejtesПотому, что класс ListDictionary это класс сборки System, а не mscorlib
Неправильно:
clr-namespace:System.Collections.Specialized;assembly=mscorlib
Правильно:
clr-namespace:System.Collections.Specialized;assembly=System
Спасибо за внимание!
Теперь понял - заработало.

И подскажите, пожалуйста, чтобы в будущем таких ошибок не совершать, где и как можно посмотреть каких сборок классы?
System.Collections - mscorlib
System.Collections.Specialized - System
Погуглил - сам не нашёл такой информации.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707938
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Встаете на объект или тип в C# Файле или на элемент в XAML, нажать F12 (дефолт)
открывается файл с метаданными типа, в 1 и 2 строке сразу видно, какая сборка (
2. Меню -> View -> Object Browser найти тип и посмотреть к какой сборке он относится.
3. Зайти на MSDN и посмотреть

Код: 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.
#region Assembly PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\PresentationFramework.dll
#endregion

using System.Collections;
using System.ComponentModel;
using System.Windows.Automation.Peers;
using System.Windows.Controls.Primitives;
using System.Windows.Documents;
using System.Windows.Markup;

namespace System.Windows.Controls
{
    //
    // Summary:
    //     Represents a control that can be used to display or edit unformatted text.
    [ContentProperty("Text")]
    [Localizability(LocalizationCategory.Text)]
    public class TextBox : TextBoxBase, IAddChild, ITextBoxViewHost
    {
        //
        // Summary:
        //     Identifies the System.Windows.Controls.TextBox.TextWrapping dependency property.
        public static readonly DependencyProperty TextWrappingProperty;
        ...
}
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707955
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4. Поставить решарпер. Тогда вообще не придется неймспейсы указывать, написал ListDictionary, остальное решарпер сам найдет и допишет )
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39707976
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro4. Поставить решарпер. Тогда вообще не придется неймспейсы указывать, написал ListDictionary, остальное решарпер сам найдет и допишет )VS2017 умеет это без решарпера, но работает хер пойми как, в итоге я уже просто привык руками всё делать, да и нужно это только по большей части для своих\чужих контролов, и для типов модели представления, за 1 файл не больше 4-5 доп. НСов. Если их больше, то скорее всего файл скомпонован неверно.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39708008
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, Спасибо за совет! Обязательно воспользуюсь.
Извиняюсь за надоедливость, но будьте любезны, помогите разобраться с вариантом использования ListDictionary.
Как в ресурсах создать экземпляр этого класса и присвоить ему значения?
Я попробовал так
Код: xml
1.
2.
3.
4.
5.
    <Window.Resources>
        <local:MyContainer>
            
        </local:MyContainer>
    </Window.Resources>


Но ситуация странная какая-то. После ввода local: имя класса MyContainer видно и предлагается его вставить. Но после его ставки выдаёт ошибку "Имя "MyContainer" не существует ...".
Пожалуйста, помогите осуществить и этот вариант.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39708112
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Haspразобраться с вариантом использования ListDictionary.Eld Haspимя класса MyContainer видно и предлагается его вставить.Не понял в итоге, с чем разобраться?

Eld HaspНо после его ставки выдаёт ошибку "Имя "MyContainer" не существует ...".Скомпилируйте проект. Он просто не видит этого класса в dll-ке.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39708116
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes1. Встаете на объект или тип в C# Файле или на элемент в XAML, нажать F12 (дефолт)
открывается файл с метаданными типа, в 1 и 2 строке сразу видно, какая сборка (
2. Меню -> View -> Object Browser найти тип и посмотреть к какой сборке он относится.
3. Зайти на MSDN и посмотреть

Я в последнее время вместо MSDN (что-то они вообще хардкорное сделали, в последниях версиях документации унаследованных мемберов можно увидеть только в базовом классе, где они определены) захожу сразу на https://referencesource.microsoft.com/ , и там из строки поиска сразу перехожу к нужному классу со всеми его потрохами.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39708546
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProСкомпилируйте проект. Он просто не видит этого класса в dll-ке. Спасибо!
Причина действительно была в этом.
Ваш вариант с MyContainer - оказался самым удобным.
Ещё раз - Спасибо!
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39708568
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, но теперь вылазеет ошибка при попытке исполнения во время инициализации элементов
XamlObjectWriterException: Свойство коллекции "DataContent_на_XAML___Wpf_.MyContainer"."ListDays" не определено (null).
В 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.
<Window x:Class="DataContent_на_XAML___Wpf_.MainWindow"
................
    <Window.Resources>
        <local:MyContainer x:Key="MyContent">
            <local:MyContainer.ListDays>
                <sys:String>Понедельник</sys:String>
                <sys:String>Вторник</sys:String>
..................
           </local:MyContainer.ListDays>
            <local:MyContainer.ListMonths>
                <sys:String>Январь</sys:String>
                <sys:String>Февраль</sys:String>
.............................
            </local:MyContainer.ListMonths>
        </local:MyContainer>
    <Window.DataContext>
        <Binding Mode="OneWay" Source="{StaticResource MyContent}"/>
    </Window.DataContext>

    </Window.Resources>
.....................
        <ListBox ItemsSource="{Binding ListMonths}"  HorizontalAlignment="Center"  Margin="10"/>
        <ListBox ItemsSource="{Binding ListDays}" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="10"/>
..............
</Window>

Ни каких ошибок при редактировании XAML нет.
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39708571
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался. Надо было списки в коде MyContainer инициализировать.
В таком варианте - всё заработало!
Спасибо!
...
Рейтинг: 0 / 0
DataContent на XAML (WPF)
    #39708645
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / DataContent на XAML (WPF)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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