powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / SL: listbox datatemplate для listboxitem внесенных через xaml
25 сообщений из 31, страница 1 из 2
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36389324
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ситуация такая:
<listbox ...>
<listboxitem content="test"/>
<listbox.itemtemplate>
<datatemplate>
<textblock text= ВОТ ТУТ ЧТО НАПИСАТЬ,что появилось содержание из listboxitem.content />
</>
</>

спасибо
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36389414
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
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.
<UserControl x:Class="SilverlightApplication2.MainPage"
    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:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"

    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"  Loaded="UserControl_Loaded">
    <Grid x:Name="LayoutRoot" Background="White">
        <ListBox x:Name="DemoList">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
          <controls:WrapPanel></controls:WrapPanel>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>

            <ListBox.Template>
                <ControlTemplate>
                    <Grid>
                        <ScrollViewer>
                            <ItemsPresenter />
                        </ScrollViewer>
                    </Grid>
                </ControlTemplate>
            </ListBox.Template>
            <ListBox.ItemTemplate>
                <DataTemplate>
                    
                    <TextBlock Text="{Binding}" Foreground="Black"  FontSize="20"
                               TextAlignment="Right" 
                               Width="25" />
                </DataTemplate>
            </ListBox.ItemTemplate>
            <ListBoxItem Content="wer"></ListBoxItem>
        </ListBox>
    </Grid>

</UserControl>
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Partial Public Class MainPage
    Inherits UserControl

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub UserControl_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)


        For Each number In Enumerable.Range( 1 ,  100 )
            DemoList.Items.Add(number)
        Next
    End Sub
End Class

вот тут,
не происходит наложение шаблона на listboxitem определенный в xaml.
как сделать,чтобы происходило?
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36389519
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут нашел ответ.
а как установить datacontext в этом случае?
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36389524
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоит внимательней прочитать про биндинг
Не вдаваясь в подробности. Один из вариантов

XAML
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<UserControl x:Class="SilverlightApplication2.MainPage"
.....................

    <Grid x:Name="LayoutRoot" Background="White">
        <ListBox ItemsSource="{Binding }">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel >
                        <TextBlock Text="{Binding}" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</UserControl>


код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
public MainPage()
        {
            InitializeComponent();
// ..............
// ..............

            this.DataContext = DemoList.Items;
        }

...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36389536
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK тут нашел ответ.
а как установить datacontext в этом случае?
Через статический ресурс тоже можно. В любом случае должен быть задан DataContext
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36389625
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

ты прав. но мне нужен вариант решения только через xaml. в этом весь вопрос.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390090
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKSeVa,

ты прав. но мне нужен вариант решения только через xaml. в этом весь вопрос.
Данные в любом случае должны быть кем-то дернуты, а затем должна быть привязаны к контексту.
Из таких вариантов:
- свой дата провайдер.Задаешь метод вызова, параметры и по какому событию
- свой дата провайдер в виде локатора.
На мой взгляд, это применимо для второстепенных данных - справочников.
Более универсальный - ViewModel. Он подготавливает данные, в xaml только делаешь привязку.
ViewModel не должен знать ничего о контролах, во View только биндинг и команды.
За счет этого пропадает весь код в View и достигается независимость View & ViewModel.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390365
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто хотел ручным способом покрутить шаблоны над простым списком :)
я как бы не изобретаю механизм,который позволит делать,то что ты описал.

интересно, просто.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390401
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKЯ просто хотел ручным способом покрутить шаблоны над простым списком :)
я как бы не изобретаю механизм,который позволит делать,то что ты описал.

интересно, просто.
Тогда не понимаю, что ты хотел добиться.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390440
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот, у меня есть datatemplate для itemОВ листбокса.
добавляю item через код, и шаблон отрабатывает.
добавляю item через xaml , и шаблон не отрабатывает.
причины я знаю.
а какое есть решение, основанное на xaml , чтобы второй способ добавления приводил к отработке шаблона ?
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390539
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мое глубокое убеждение делай только декларативно.В этом случае должна быть только привязка DataContext. Делать это можно очень разными способами, универсально и без усилий.
Для начала разберись с MVVM и ICommand. Без этого будтет WinForms. ПРимеров очень много, на одном не останавливайся. Позже подкину ссылок на эту тему.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390557
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

нет нет. подожди.
вот именно в том куске кода, можно реализовать?
не нужны мне mvvc и особенно icommand , это уже код . мне нужно вэтом плоском коде,найти решение если оно возможно.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390577
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда Дата адаптер. Данные с потолка сами не упадут. Без MVVM - WinForms
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390660
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

постой!!!!!!!

во гонишь .
ты через xaml не знаешь способов? я же не против если их нету. просто узнать хочется откуд атакая разница.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390669
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи первый вариант. я уже не понимаю, что тебе нужно
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36390879
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK,

DataTemplate - шаблон для визуализации _данных_
а шаблон для ListBoxItem - вероятно ControlTemplate (хотя может оказаться достаточным использовать Style?)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<ListBox>
    <ListBox.Resources>
        <ControlTemplate x:Key="test" TargetType="ListBoxItem">
            <Grid Background="Gray">
                <ContentPresenter HorizontalAlignment="Left" VerticalAlignment="Center"/>
            </Grid>
        </ControlTemplate>
    </ListBox.Resources>
    <ListBoxItem Content="test" Template="{StaticResource test}"/>
    <ListBoxItem Template="{StaticResource test}">
        <TextBlock Text="test2"/>
    </ListBoxItem>
</ListBox>
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36391323
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

вероятно, где то ошибочка. не работает этот xaml.

авторError 1 Property elements cannot be in the middle of an element's content. They must be before or after the content. E:\code\SilverlightApplication2\SilverlightApplication2\MainPage.xaml 43 13 SilverlightApplication2

но datatemplate это как раз, то что накидывает на себя каждый item для отображения данных это характерно для списочных контролов.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36392063
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36392672
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

ничего не обычного.пересказ инфы.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36393843
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKвероятно, где то ошибочка. не работает этот xaml.
У меня ошибки нет, SL3. Может SL2 "глючит" на "test" - оно используется и как контент и как ключ?

AlexeiKно datatemplate это как раз, то что накидывает на себя каждый item для отображения данных это характерно для списочных контролов.
Похоже, если каждый item задается явно ListBoxItem, то ListBox.ItemTemplate не применяется (или "перебивается" template самого ListBoxItem). В этом есть своя "логика" - если задаешь элементы индивидуально, не скопом - то и template тогда индивидуально....

как вариант (без кода позади) - "подсовывать" ItemsSource извне
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
xmlns:sys="clr-namespace:System;assembly=mscorlib"
...
<UserControl.Resources>
    <ItemsControl x:Key="myListItems" >
        <sys:String>элемент  1 </sys:String>
        <sys:String>элемент  2 </sys:String>
    </ItemsControl>
</UserControl.Resources>
...
<ListBox ItemsSource="{Binding Items, Source={StaticResource myListItems}}" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" Foreground="Red" FontSize="20" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36393980
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жду..
когда будет вариант , основанный на моем,а не полностью другие.
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36394266
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK,

а чего тут ждать? задавай для каждого элемента template/style, по другому никак
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36394291
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<ListBox>
    <ListBox.Resources>
        <Style x:Key="testStyle" TargetType="ListBoxItem">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock Text="{Binding}" Foreground="Red" FontSize="20" />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.Resources>
    <ListBoxItem Content="wer" Style="{StaticResource testStyle}" />
    <ListBoxItem Content="xer" Style="{StaticResource testStyle}" />
    <ListBoxItem Content="ser" />
</ListBox>
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36394446
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

пример не работает.
говорит ListBoxItem does not support wer as content. [Line: 36 Position: 43]

Код: plaintext
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.
<UserControl x:Class="SilverlightApplication2.MainPage"
    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:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"

    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"  Loaded="UserControl_Loaded">
    <Grid x:Name="LayoutRoot" Background="White">
        <ListBox x:Name="DemoList">
            <ListBox.ItemsPanel>
                <ItemsPanelTemplate>
          <controls:WrapPanel></controls:WrapPanel>
                </ItemsPanelTemplate>
            </ListBox.ItemsPanel>

            <ListBox.Template>
                <ControlTemplate>
                    <Grid>
                        <ScrollViewer>
                            <ItemsPresenter  />
                        </ScrollViewer>
                    </Grid>
                </ControlTemplate>
            </ListBox.Template>
            <ListBox.Resources>
                <Style x:Key="testStyle" TargetType="ListBoxItem">
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <TextBlock Text="{Binding}" Foreground="Red" FontSize="20" />
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </ListBox.Resources>
            <ListBoxItem >wer</ListBoxItem>
            <ListBoxItem Content="wer" Style="{StaticResource testStyle}"></ListBoxItem>
            <ListBoxItem Content="wer" Style="{StaticResource testStyle}"></ListBoxItem>
            <ListBoxItem Content="wer" Style="{StaticResource testStyle}"></ListBoxItem>
            
        </ListBox>
    </Grid>

</UserControl>
...
Рейтинг: 0 / 0
SL: listbox datatemplate для listboxitem внесенных через xaml
    #36394478
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiK,

да, из-за этой строки
<ListBoxItem >wer</ListBoxItem>
понимает только такую форму
<ListBoxItem Content="wer" />
х.з. почему...
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / SL: listbox datatemplate для listboxitem внесенных через xaml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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