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

спасибо
...
Рейтинг: 0 / 0
28.12.2009, 11:40
    #36389414
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
Код: 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
28.12.2009, 12:17
    #36389519
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
тут нашел ответ.
а как установить datacontext в этом случае?
...
Рейтинг: 0 / 0
28.12.2009, 12:19
    #36389524
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
Стоит внимательней прочитать про биндинг
Не вдаваясь в подробности. Один из вариантов

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

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

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

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

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

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

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

во гонишь .
ты через xaml не знаешь способов? я же не против если их нету. просто узнать хочется откуд атакая разница.
...
Рейтинг: 0 / 0
28.12.2009, 18:56
    #36390669
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
покажи первый вариант. я уже не понимаю, что тебе нужно
...
Рейтинг: 0 / 0
28.12.2009, 22:05
    #36390879
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
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
29.12.2009, 10:42
    #36391323
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
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
29.12.2009, 14:56
    #36392063
SeVa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
...
Рейтинг: 0 / 0
29.12.2009, 17:48
    #36392672
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
SeVa,

ничего не обычного.пересказ инфы.
...
Рейтинг: 0 / 0
30.12.2009, 14:16
    #36393843
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
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
30.12.2009, 15:14
    #36393980
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
жду..
когда будет вариант , основанный на моем,а не полностью другие.
...
Рейтинг: 0 / 0
30.12.2009, 16:57
    #36394266
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
AlexeiK,

а чего тут ждать? задавай для каждого элемента template/style, по другому никак
...
Рейтинг: 0 / 0
30.12.2009, 17:13
    #36394291
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
например
Код: 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
30.12.2009, 18:25
    #36394446
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
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
30.12.2009, 18:45
    #36394478
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL: listbox datatemplate для listboxitem внесенных через xaml
AlexeiK,

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


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