powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не могу вывести Image, подсобите!
50 сообщений из 50, показаны все 2 страниц
Не могу вывести Image, подсобите!
    #40050727
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
var wpfimg = new System.Windows.Controls.Image();
                        var img = ((ImageList)((gridControl1.MainView as GridView).Images)).Images[5];
                        using (var stream = new System.IO.MemoryStream())
                        {
                            img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                            wpfimg.Source = System.Windows.Media.Imaging.BitmapFrame.Create(stream,
                                                                                            System.Windows.Media.Imaging.BitmapCreateOptions.None, 
                                                                                            System.Windows.Media.Imaging.BitmapCacheOption.OnLoad);
                        }

                        gcc.DataContext = wpfimg;

                        const string aaml = @"<DataTemplate
                                                               xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
                                                               xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" 
                                                               >
                                                               <Image x:Name=""img1"" Width=""16"" Height=""16"" Source=""{Binding}"" Stretch=""None""/>
                                                         </DataTemplate>"; 

                        gcc.HeaderCustomizationAreaTemplate = System.Windows.Markup.XamlReader.Parse(aaml) as                                                                                                                                               
 System.Windows.DataTemplate;
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050860
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы создаете элемент управления Control.Image и передаете его в качестве контекста элементу gcc...
понять, что это такое и почему это вообще должно работать, не представляется возможным.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050864
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

gcc - GridColumn, у него есть Header, а у Header - HeaderCustomizationArea? вот я пытаюсь задать Темплейт для этого элемента через DataContext Родителя (gcc), но почему то Binding не делает ожидаемого.

При этом gcc.HeaderCustomizationAreaTemplate.LoadContent() показывает, что Image там имеется, но на экране пусто.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050866
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

Вместо белых кружочков на хедерах столбцов (Смещение относительное, Смещение абсолютное) должна появиться другая картина.
Если для Source вместо {Binding} указать Uri, то все нормально, но мне надо динамически сгенерировать имейдж и передать в кусок XAML через парсер, так как у меня нет инфраструктуры WPF, я просто хочу заменить WinForms дерево на WPF Grid Девок.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050886
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos , GridColumn или DataGridColumn?

Uri вы задаёте так же на Шарпе в коде шаблона (через парсер XAML) или в XAML ?

И в целом, не вижу смысла здесь использовать такое сложное задание шаблона.
Задайте в XAML шаблон с каким-то дефолтным значением для Source (чтобы в режиме Разработки было удобнее).
А в Шарпе пройдитесь по визуальному дереву и измените значение Source на ваше изображение без всякой привязки.

И, насколько помню, колонки не являются частью визуального дерева.
Они используются только как данные для создания визуальной части строки заголовков.
После загрузки (Loaded) менять что-то в колонках смысла нет.
Надо пройти по визуальному дереву DataGrid и в нём найти нужный Image.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050898
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

gcc = new DevExpress.Xpf.Grid.GridColumn();

Uri через парсер XAML. Такой код работает. Мне этот чертов Image надо как то передать в парсер,
Через Resource в коде не получается (парсер не видит родителя), через DataContextтоже (хотя тут Image передан в DataTemplate, я вижу его при gcc.HeaderCustomizationAreaTemplate.LoadContent(). Но, почему то не визуализируется и проходит тихо, без икзепшн.

Код: c#
1.
2.
3.
4.
5.
6.
                       const string aaml = @"<DataTemplate
                                                 xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
                                                 xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
                                                 <Image x:Name=""img1"" Source=""add_16x.png"" Width=""16"" Height=""16"" Stretch=""None""/>
                                              </DataTemplate>"; 
                        gcc.HeaderCustomizationAreaTemplate = System.Windows.Markup.XamlReader.Parse(aaml) as System.Windows.DataTemplate;



Дык, что бы получить в визуальном дереве этот image в нужном месте надо что бы сработал этот кусок и вставил image куда надо.
Блин, надо поискать, как этот DataTemplate в коде делается, что б без парсера.
Нет тут WPF, в Винформс вставлен через ElementHost этот грид.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050899
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

ааа, ты имеешь ввиду, допустим так через Uri и оставить , а потом уж поменять Image в визуальном дереве?
щас попробую
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050903
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

+ выводятся, но сам объект Image не могу поймать - FindName("img1") = null
Код: c#
1.
2.
3.
4.
5.
6.
7.
                        const string aaml = @"<DataTemplate
                                                 xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
                                                 xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
                                                 <Image x:Name=""img1"" Source=""C:\Users\Saxavat\Documents\Visual Studio 2015\Projects\VIP_DEV\ВИПРОС\bin\Release\add_16x.png"" Width=""16"" Height=""16"" Stretch=""None""/>
                                              </DataTemplate>"; 

                        gcc.HeaderCustomizationAreaTemplate = System.Windows.Markup.XamlReader.Parse(aaml) as System.Windows.DataTemplate;
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050905
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos , ещё вариант.
Можно вместо ресурсов использовать статический класс.
Создаёте статическое свойство типа ImageSource.
А в шаблоне привязываетесь к нему {Binding Source={x:Static local:Class.Property}}
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050906
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos

+ выводятся, но сам объект Image не могу поймать - FindName("img1") = null


У шаблонов своё дерево имён.
Посмотрите в Динамическом Визуальном Дереве как вложены элементы, и ищите по этой вложенности.
Более конкретно сказать не могу - для этого надо запускать приложение.
И с DevExpress совершенно не знаком.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050909
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp
ViPRos , ещё вариант.
Можно вместо ресурсов использовать статический класс.
Создаёте статическое свойство типа ImageSource.
А в шаблоне привязываетесь к нему {Binding Source={x:Static local:Class.Property}}

Пробовал, но парсер класс ищет Window, но у меня Form.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050910
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp
ViPRos

+ выводятся, но сам объект Image не могу поймать - FindName("img1") = null


У шаблонов своё дерево имён.
Посмотрите в Динамическом Визуальном Дереве как вложены элементы, и ищите по этой вложенности.
Более конкретно сказать не могу - для этого надо запускать приложение.
И с DevExpress совершенно не знаком.


Динамическом Визуальном Дереве? Где взять?

(VisualTreeHelper и LogicalTreeHelper ничем не помогли, нет такого имени img1 нигде)
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050911
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos
Пробовал, но парсер класс ищет Window, но у меня Form.

Возможно для DevExpress надо какие-то иные способы применять.
Надо запускать приложение и разбираться в отладке.
Без этого не могу ничего сказать.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40050955
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем вообще этот цирк с парсингом XAML?
Создайте ресурсный файл, подключите его к App\Окну и пользуйтесь. Весь этот цирк с динамической загрузкой XAML пахнет говницом.
Делать так 100% не нужно, так как это не имеет никакого смысла
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051048
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
зачем вообще этот цирк с парсингом XAML?
Создайте ресурсный файл, подключите его к App\Окну и пользуйтесь. Весь этот цирк с динамической загрузкой XAML пахнет говницом.
Делать так 100% не нужно, так как это не имеет никакого смысла


Уже несколько раз говорил, что мне надо в WinForms через ElementHost показать WPF Grid вместо WinForm Grid.
Кроме этого грида на форме много чего имеется, показывал форму.
Так что нет никакого System.Window.Application, Window и т.д., естественно нет и их ресурсов и т.д.
Да тут дело вообще то не в парсере, мне кажется, я как то не правильно в том куске DataTemplate неправильно задаю Binding.
Есть в проге объект (image), надо его показать в Темплейте, я читал про DataContext, что он передается по дереву вниз (и правда передается) и потому этот image присвоил DataContext вышестоящего по иерархию элемента. Но, так как это же DataContex и будет DataContex для Content темплейта, я просто дал ссылку в виде

<DataTemplate>
<Image Source={Binding}/>
</DataTemplate>

вот думаю что то тут неправильно.
Source={Binding} - вот это насколько правильно?
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051079
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos , я не совсем понимаю, что вы делаете в коде, поэтому сначала уточняющие вопросы.

1) Создаёте Image:
Код: c#
1.
   var wpfimg = new System.Windows.Controls.Image(); 



2) Получили картинку и передали её в в созданный Image:
Код: c#
1.
2.
   img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
   wpfimg.Source = System.Windows.Media.Imaging.BitmapFrame.Create(....);



3) Передали в Контекст Данных созданный Image:
Код: c#
1.
   gcc.DataContext = wpfimg;



4) В шаблоне Image получает источник из Контекста Данных:
Код: xml
1.
   <Image x:Name=""img1"" Width=""16"" Height=""16"" Source=""{Binding}"" Stretch=""None""/>



Если всё так, то какую я вижу очевидную проблему.
Image.Source должен получать значение в типе ImageSource.
Вы же ему передаёте тип System.Windows.Controls.Image, что приводит к ошибке привязки.
По идее, в окне Вывод должно было быть сообщение об этой ошибке.

Если я прав, то вам следует сделать следующим образом:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    ImageSource imageSource;
    var img = ((ImageList)((gridControl1.MainView as GridView).Images)).Images[5];
    using (var stream = new System.IO.MemoryStream())
    {
        img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
        imageSource = System.Windows.Media.Imaging.BitmapFrame.Create(
                                      stream,
                                      System.Windows.Media.Imaging.BitmapCreateOptions.None, 
                                      System.Windows.Media.Imaging.BitmapCacheOption.OnLoad);
    }
    gcc.DataContext = imageSource;



P.S. И рекомендация для строки XAML в Шарпе.
Чем использовать двойные "" удобнее одинарные ' .
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051086
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

Естественно, делал и так :) без толку. Это можно и в XAML
<Image Source="Binding Source}"/>
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051091
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

Из за этих "< >!... и т.д. фигни и не стал в свое время работать с ML языками :)
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051101
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

Да уж, все эти XAMLы ... идут лесом против Code! :)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
          
            var wpfimg = new System.Windows.Controls.Image();
            var img = ((ImageList)((gridControl1.MainView as GridView).Images)).Images[5];
            using (var stream = new System.IO.MemoryStream())
            {
                    img.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
                    wpfimg.Source = System.Windows.Media.Imaging.BitmapFrame.Create(stream,
                                                                       System.Windows.Media.Imaging.BitmapCreateOptions.None, 
                                                                       System.Windows.Media.Imaging.BitmapCacheOption.OnLoad);
             }
     
            var dataTemplate = new System.Windows.DataTemplate();

            var imageFactory = new System.Windows.FrameworkElementFactory(typeof(System.Windows.Controls.Image));
            imageFactory.SetValue(System.Windows.Controls.Image.SourceProperty, wpfimg.Source);
            imageFactory.SetValue(System.Windows.Controls.Image.StretchProperty, System.Windows.Media.Stretch.None);

            dataTemplate.VisualTree = imageFactory;

            gcc.HeaderCustomizationAreaTemplate = dataTemplate;
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051113
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

но, на самом то деле мы так и не смогли заставить работать XAML с DataContext, почему то Image там не создается, хотя все метаданные в темплейте видны.
Точно такая же штука с TextBlock отлично работает. Но, тут {Binding} ссылается на gcc.Header (хотя я это не задавал!)
Код: c#
1.
2.
3.
4.
5.
6.
                const string caml = @"<DataTemplate
                                         xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
                                         xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"">
                                         <TextBlock Text=""{Binding}"" TextWrapping=""Wrap"" TextTrimming=""None""/>
                                      </DataTemplate>";
                gcc.HeaderTemplate = System.Windows.Markup.XamlReader.Parse(caml) as System.Windows.DataTemplate;
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051147
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos
но, на самом то деле мы так и не смогли заставить работать XAML с DataContext, почему то Image там не создается, хотя все метаданные в темплейте видны.
Точно такая же штука с TextBlock отлично работает.

Мне тоже это интересно.

Есть ещё предположение, что HeaderCustomizationAreaTemplate применяется не к DataContext, а к другому свойству.
Пример свойства ContentControl: Content и ContentTemplate.
ContentTemplate применяется к Content и изменение DataContext может не повлиять на ContentTemplate.

Попробуйте в этом шаблоне задать обычный TextBlock, чтобы понять к чему идёт привязка:
Код: c#
1.
2.
3.
4.
5.
6.
7.
@"<DataTemplate
       xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
       xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" 
       >
       <--!<Image x:Name=""img1"" Width=""16"" Height=""16"" Source=""{Binding}"" Stretch=""None""/>-->
       <TextBlock Text=""{Binding}""/>
</DataTemplate>"; 
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051154
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos , а восходящие привязки типа FindAncestor работают?
Если да то можно задать привязку к свойству DataContext типа GridColumn.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051183
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp
ViPRos , а восходящие привязки типа FindAncestor работают?
Если да то можно задать привязку к свойству DataContext типа GridColumn.

Да пробовал.
Ну, блин, а я что делаю? Я и написал - gcc.DataContext = wpfimg;
И рассчитывая (правильно) что этот DataContext будет передаваться всем детям по иерархии и дойдет до ColumnHeaderCustomizationArea написал, рассчитывая что вместо {Binding} будет wpfimg(.Source пробовал тоже)

<DataTemplate>
<Image Source="{Binding}"/>
</DataTemplate>
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051185
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp
ViPRos
но, на самом то деле мы так и не смогли заставить работать XAML с DataContext, почему то Image там не создается, хотя все метаданные в темплейте видны.
Точно такая же штука с TextBlock отлично работает.

Мне тоже это интересно.

Есть ещё предположение, что HeaderCustomizationAreaTemplate применяется не к DataContext, а к другому свойству.
Пример свойства ContentControl: Content и ContentTemplate.
ContentTemplate применяется к Content и изменение DataContext может не повлиять на ContentTemplate.

Попробуйте в этом шаблоне задать обычный TextBlock, чтобы понять к чему идёт привязка:
Код: c#
1.
2.
3.
4.
5.
6.
7.
@"<DataTemplate
       xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
       xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" 
       >
       <--!<Image x:Name=""img1"" Width=""16"" Height=""16"" Source=""{Binding}"" Stretch=""None""/>-->
       <TextBlock Text=""{Binding}""/>
</DataTemplate>"; 



Чуть позже попробую с ТекстБлок, так мы хотя бы увидим название проперти.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051190
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

Привязка идет к GridColumnData, Contains information about a column. This class supports the internal infrastructure and is not intended to be used directly from your code.

Properties Description
Name
....ю
Column - Gets the grid column.
Data - Gets or sets an object that contains grid data. Inherited from GridDataBase.
.....
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051193
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos

Да пробовал.
Ну, блин, а я что делаю? Я и написал - gcc.DataContext = wpfimg;
И рассчитывая (правильно) что этот DataContext будет передаваться всем детям по иерархии и дойдет до ColumnHeaderCustomizationArea написал, рассчитывая что вместо {Binding} будет wpfimg(.Source пробовал тоже)

<DataTemplate>
<Image Source="{Binding}"/>
</DataTemplate>


Я немного о другом.
Вы рассчитываете, что шаблон будет применяться к DataContext.
Но это надо знать точно, а не гадать.
Вполне возможно он hghbvtyztncz к другому свойству, допустим, в Header.

Вот пример XAML для демонстрации того о чём я говорю.
Из него видно, что источник по умолчанию для ContentTemplate - это Content, а не DataContext.
И чтобы привязаться к DataContext надо задавать восходящий поиск предка по типу.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    <UniformGrid>
        <ContentControl Content="Строка Контента" DataContext="Строка Контекта данных">
            <ContentControl.ContentTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"/>
                </DataTemplate>
            </ContentControl.ContentTemplate>
        </ContentControl>
          <ContentControl Content="Строка Контента" DataContext="Строка Контекта данных">
            <ContentControl.ContentTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentControl}}}"/>
                </DataTemplate>
            </ContentControl.ContentTemplate>
        </ContentControl>
  </UniformGrid>
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051195
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos

Привязка идет к GridColumnData, Contains information about a column. This class supports the internal infrastructure and is not intended to be used directly from your code.


Видите, а вы рассчитывали на то, что там будет GridColumn.DataContext.

По идее должна сработать такая привязка:
Код: c#
1.
2.
3.
4.
5.
6.
7.
@"<DataTemplate
          xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
          xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" 
          xmlns:dexg=""Здесь пространство DevExpress.Xpf.Grid"" 
               <Image x:Name=""img1"" Width=""16"" Height=""16"" 
                   Source=""{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dexg:GridColumn}}}"" Stretch=""None""/>
</DataTemplate>";



Только надо правильно задать пространство для префикса dexg
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051199
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

Понял, я в принципе рассчитывал на DataContext по умолчанию, вроде так написано было в в доках.
Но, можем и явно именовать, как ты показал.
Щас проверю.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051202
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp
ViPRos

Привязка идет к GridColumnData, Contains information about a column. This class supports the internal infrastructure and is not intended to be used directly from your code.


Видите, а вы рассчитывали на то, что там будет GridColumn.DataContext.

По идее должна сработать такая привязка:
Код: c#
1.
2.
3.
4.
5.
6.
7.
@"<DataTemplate
          xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
          xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" 
          xmlns:dexg=""Здесь пространство DevExpress.Xpf.Grid"" 
               <Image x:Name=""img1"" Width=""16"" Height=""16"" 
                   Source=""{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dexg:GridColumn}}}"" Stretch=""None""/>
</DataTemplate>";



Только надо правильно задать пространство для префикса dexg


Такой код не работает (DataContext, DataContext.Source,...)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
gcc.DataContext = wpfimg;
                        // if (!gw.Resources.Contains("image1")) gw.Resources.Add("image1", wpfimg);
                        
                        const string aaml = @"<DataTemplate
                                                 xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
                                                 xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
                                                 xmlns:dx=""http://schemas.devexpress.com/winfx/2008/xaml/core""
                                                 xmlns:dxg=""http://schemas.devexpress.com/winfx/2008/xaml/grid""
                                                 >
                                                 <Image x:Name=""img1"" Source=""{Binding RelativeSource={RelativeSource FindAncestor, 
                                                       AncestorType={x:Type dxg:GridColumn}}, Path=DataContext.Source}""/>
                                              </DataTemplate>";

                        gcc.HeaderCustomizationAreaTemplate = System.Windows.Markup.XamlReader.Parse(aaml) as System.Windows.DataTemplate;
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051204
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

Я это и раньше пробовал
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051205
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Класс GridColumnData
Судя по документации до него "из вне" не достучаться.
У него даже нет свойства DataContext.
Поэтому присвоение значения Контексту Данных и не срабатывает.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051206
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

за 40 с лишним лет за***ли все эти писатели, твари WinForms и WPF имеют собственные Application, Window и...... руки бы оторвал фаулерам долбаным, н одна фигня не работает как ожидается
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051207
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos

Такой код не работает (DataContext, DataContext.Source,...)

Проверьте, вообще, источник привязка находит или нет:
Код: c#
1.
2.
   <TextBlock x:Name=""img1"" Text=""{Binding RelativeSource={RelativeSource FindAncestor, 
               AncestorType={x:Type dxg:GridColumn}}}""/>



ViPRos

за 40 с лишним лет за***ли все эти писатели, твари WinForms и WPF имеют собственные Application, Window и...... руки бы оторвал фаулерам долбаным, н одна фигня не работает как ожидается

DevExpress - это не WPF.
Это отдельная библиотека со своими уникальными элементами, соглашениями контрактами.
Общее с WPF у них заканчивается на DependencyObject.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051208
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок, попозже, ужинать зовут :)
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051218
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
                        gcc.DataContext = wpfimg;
                        // if (!gw.Resources.Contains("image1")) gw.Resources.Add("image1", wpfimg);
                        
                        const string aaml = @"<DataTemplate
                                                 xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
                                                 xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
                                                 xmlns:dx=""http://schemas.devexpress.com/winfx/2008/xaml/core""
                                                 xmlns:dxg=""http://schemas.devexpress.com/winfx/2008/xaml/grid""
                                                 >
                                                 <TextBlock x:Name=""img1"" Text=""{Binding RelativeSource={RelativeSource FindAncestor, 
                                                       AncestorType={x:Type dxg:GridColumn}}}""/>
                                              </DataTemplate>";

                        gcc.HeaderCustomizationAreaTemplate = System.Windows.Markup.XamlReader.Parse(aaml) as System.Windows.DataTemplate;



Пусто все, проходит без икзепш, но и ничего не делает.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051222
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos

Пусто все, проходит без икзепш, но и ничего не делает.

Простые идеи закончились.
Надо запускать Решение и разбирать в дебагере.
Динамическое Визуальное Дерево в дебагере доступно?
Есть ли в нём что-нибудь?
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051226
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp
ViPRos

Пусто все, проходит без икзепш, но и ничего не делает.

Простые идеи закончились.
Надо запускать Решение и разбирать в дебагере.
Динамическое Визуальное Дерево в дебагере доступно?
Есть ли в нём что-нибудь?

Динамическое визуальное дерево это для Window, наверное.

Вощем, тут дело в том, что этот класс GridColumn как бы и не является родителем своего хедера, я этот Image присвоил DataContext GridControl самого и тогда только все заработало! И это очень хорошо, хотя я в коде уже все решил, но появилась уверенность в XAML парсере - Работает, даже в смешанной среде! Гут!

Теперь надо как то с Transparancy разобраться этих Imageов.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
                        gw.DataContext = wpfimg.Source;
                        const string aaml = @"<DataTemplate
                                                 xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
                                                 xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
                                                 xmlns:dx=""http://schemas.devexpress.com/winfx/2008/xaml/core""
                                                 xmlns:dxg=""http://schemas.devexpress.com/winfx/2008/xaml/grid""
                                                 >
                                                 <Image x:Name=""img1"" Source=""{Binding RelativeSource={RelativeSource FindAncestor, 
                                                        AncestorType={x:Type dxg:GridControl}}, Path=DataContext}"" Stretch=""None""/>
                                              </DataTemplate>";
                        gcc.HeaderCustomizationAreaTemplate = System.Windows.Markup.XamlReader.Parse(aaml) as System.Windows.DataTemplate;
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051227
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

C DataContext как умолчание для Binding меня значит подкололи.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051230
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

Спасибо!
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051241
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

формально Хост контрол для WPF это и есть окно WPF, не вижу тут никаких проблем и противоречий, чтоб такое городить
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051244
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

Что хоть "городить" то?
Был кусок XAML для DataTemplate, так как везде читал, что в коде создавать его не DataTemplate кошерно (дипрекейтед).
И код этот не работал, вот разобрались почему не работал - потому что девки не хорошие ребята и я нуб в ВПФ.
Но, теперь могу честно сказать, что имею опыт ковыряния в ВПФ и ускорил WinForms Xtra.TreeList на 2 порядка, заменив его на WPF GridControl.TreeListView :)
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051247
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos, решение нормальное.
Трудность была в том, что нет нормальной документации по DevExpress и, как вы говорите, Динамическое Визуальное Дерево не работает.
Из-за пришлось находить решение "методом научного тыка".

По решению, обратите внимание, что вам не нужен в Контексте Данных Image.
Вам нужен ImageSource.
Вы создаёте Image, но не используете его.
Я показал выше ( 22290284 ) как сразу создать ImageSource и именно его и надо передавать в Контекст Данных.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051250
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp
ViPRos, решение нормальное.
Трудность была в том, что нет нормальной документации по DevExpress и, как вы говорите, Динамическое Визуальное Дерево не работает.
Из-за пришлось находить решение "методом научного тыка".

По решению, обратите внимание, что вам не нужен в Контексте Данных Image.
Вам нужен ImageSource.
Вы создаёте Image, но не используете его.
Я показал выше ( 22290284 ) как сразу создать ImageSource и именно его и надо передавать в Контекст Данных.

Да нет, решение через DataContext грида для каждого колумна не кошерно, это мы просто разобрались с девекспрессом.
Лучше в коде создавать DataTemplate для каждого колумна, так как у них разные статусы и Image сорсы и кешировать.
Там еще у меня есть вопросы попозже.
В LookUpEditSettings и т.д. есть встроенные кнопки (addNew, Clear,... ) и нет к ним доступа, там надо будет, кажется, тоже через routedCommand привязаться к событиям этих кнопок. Спрошу по ходу тогда.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051251
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos , писали, что привязка к статическим членам не работает.
Как вы это проверили?

Так не работает?
Код: c#
1.
2.
3.
4.
public static class Datas
{
   public static string Example {get;} = "Проверка";
}

Код: c#
1.
2.
3.
4.
5.
6.
7.
@"<DataTemplate
       xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
       xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
       xmlns:local=""Пространство класса Datas""
       >
       <TextBlock Text=""{Binding Source={x:Static local:Datas.Example}}""/>
</DataTemplate>"; 
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051254
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp
ViPRos , писали, что привязка к статическим членам не работает.
Как вы это проверили?

Так не работает?
Код: c#
1.
2.
3.
4.
public static class Datas
{
   public static string Example {get;} = "Проверка";
}

Код: c#
1.
2.
3.
4.
5.
6.
7.
@"<DataTemplate
       xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
       xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""
       xmlns:local=""Пространство класса Datas""
       >
       <TextBlock Text=""{Binding Source={x:Static local:Datas.Example}}""/>
</DataTemplate>"; 



Да я не буду это даже проверять :)
У меня другая задача - малой кровью ( не меняю ничего в принципе) заменить (и то с разрешения пользователя - через параметр ВИПРОС при больших объемах данных.) TreeList винформс на TreeListView ВПФ - и все.
Это только из за того что TreeListView работает быстрее чем TreeList (большие объемы инициализируются быстрее на порядки).
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051261
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos

Да я не буду это даже проверять :)

Вы просто писали, что хотели, но не получилось использовать Resuorses.
Таким статическим класcом можно заменить глобальные (уровня App) ресурсы.

А если в DevExpress используется Net 4.5, то такую привязку можно сделать даже динамической: Привязка к статическим свойствам
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051263
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

Сижу на Net 4.0. Требование заказчика.
Я еще задам вопросы :)
С Binding почти разобрались - возможностей много.
Просто слова class и т.д. на меня действуют как красная тряпка. :)
Class только по принуждению VS.
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051264
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos , это же Шарп, а Фортран!
Здесь всё делается делается через классы!
Net предоставляет только основные типы, скажем так - костяк.
Но использование только их очень сильно усложняет решение.
В решении обязательно используются свои кастомные классы.
Без этого Шарп в такую кучу г..на превратится...
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051299
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eld Hasp,

Все совсем наоборот, NET - упрощенный доступ к ОС (относительно DWORD, DWORD,.... 50 параметров) + несколько моментов упрощающих жизнь формостроителям.
А вот уже ваши (наши) "классы" ни в какие ворота не лезут :) чемоданы для переноса данных :)
Есть в контроле DataContext и Resource типа Object? Есть! Значит этот контрол будет держать в этих свойствах ВСЮ нужную для чайлд иерархию информацию, иначе нафига они там заданы?
Если я сам буду писать свои классы, то нафиг мне эти контролы?
...
Рейтинг: 0 / 0
Не могу вывести Image, подсобите!
    #40051316
Eld Hasp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos
Все совсем наоборот, NET - упрощенный доступ к ОС (относительно DWORD, DWORD,.... 50 параметров) + несколько моментов упрощающих жизнь формостроителям.
А вот уже ваши (наши) "классы" ни в какие ворота не лезут :) чемоданы для переноса данных :)

Вы не правы.
Для работы с OC можно использовать Api и COM.
Net был специально создан под языки ООП.
И вне ОПП реализация Net приложения значительно усложняется.
Элементарный пример.
Как в DataContext передать несколько значений?
Без создания своего кастомного класса это просто не получится осуществить.
И таких примеров великое множество.

Поэтому не надо проводить параллель "Если я этого не знаю или не умею - значит это только лишнее, придуманное для фриков".
Изучайте новое, получайте опыт реализации.
Когда сможете правильно использовать ООП - поймёте насколько оно упрощает жизнь.

ViPRos
Есть в контроле DataContext и Resource типа Object? Есть! Значит этот контрол будет держать в этих свойствах ВСЮ нужную для чайлд иерархию информацию, иначе нафига они там заданы?
Если я сам буду писать свои классы, то нафиг мне эти контролы?

Посмотрите шаблоны контролов, их визуально дерево.
Они бывают порой очень сложными.
Для конкретного контрола источник привязки по умолчанию всегда Контекст Данных.
Но вы же привязку задаёте не у контрола, а у шаблона данных.

Вот пример с ContentControl дополненный третьим способом задания в котором прекрасно работает привязка по умолчанию:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    <UniformGrid>
        <ContentControl Content="Строка Контента" DataContext="Строка Контекста данных">
            <ContentControl.ContentTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"/>
                </DataTemplate>
            </ContentControl.ContentTemplate>
        </ContentControl>
        <ContentControl Content="Строка Контента" DataContext="Строка Контекста данных">
            <ContentControl.ContentTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentControl}}}"/>
                </DataTemplate>
            </ContentControl.ContentTemplate>
        </ContentControl>
        <ContentControl DataContext="Строка Контекста данных">
            <TextBlock Text="{Binding}"/>
        </ContentControl>
    </UniformGrid>



Когда в Контенте задаётся UI элемент, то используется напрямую для отображения.
Если же в Контенте другой тип, то напрямую его отобразить невозможно.
Для его отображения приходится задать Шаблон данных получающий в Контекст Данных переданные в Контент данные, а не в Контекст Данных.

Вышеуказанные примеры с шаблоном данных, по сути раскрываются в такую структуру:
Код: xml
1.
2.
3.
4.
        <ContentControl x:Name="PART_Main"
            Content="Строка Контента" DataContext="Строка Контекста данных">
            <TextBlock Text="{Binding}" DataContext="{Binding Content, ElementName=PART_Main}"/>
        </ContentControl>


Привязка в Text как получала значение из Контекста Данных, так и получает его.
Но в Контексте Данных находится не Контекст Данных родительского элемента, а значение свойства Content.
И сделано так потому, что этот элемент СПЕЦИАЛЬНО разработан для отображения данных получаемых в Content, а не в DataContext.

Или другой пример.
Можно задать в ListBox шаблон элемента ItemTemplate.
И в Контексте Данных будет тоже не Контекст Данных ListBox, а элемент его коллекции.
Потому что именно для этого он и был разработан.

С вашей исходной задачей проблема возникла только из-за слабого документирования DevExpress.
Если бы можно было получить полный шаблон элемента или посмотреть визуальное древо во время исполнения - решение бы нашлось очень быстро.

В целом у меня сложилось впечатление, что вам стоило сделать свой кастомный UserControl получающий нужные данные в DataContext.
Нормально отладить его в среде WPF.
И потом уже этот готовый отлаженный контрол взывать через хост в Формах.

Это было бы много проще, чем все эти "пляски с бубном" на Шарпе.
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Не могу вывести Image, подсобите!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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