powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Биндинг к элементу коллекции в DataTemplat'е
3 сообщений из 3, страница 1 из 1
Биндинг к элементу коллекции в DataTemplat'е
    #38265386
FordSoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, помогите пожалуйста связать элемент коллекции в DataTemplate для ListBox.

Есть usercontrol который отображает информацию о билете:

XAML:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<UserControl
    x:Class="RadControlsWindows8XamlApp1.Controls.FlightInfo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:RadControlsWindows8XamlApp1.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300"
    d:DesignWidth="400">
    <Grid>
        <StackPanel>
            <TextBlock Text="Информация о билете"/>
            <TextBlock Text="{Binding Path=Ticket.Name}"/>
            <TextBlock Text="{Binding Path=Ticket.Total}"/>
        </StackPanel>        
    </Grid>
</UserControl>



код контрола:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    public sealed partial class FlightInfo : UserControl, System.ComponentModel.INotifyPropertyChanged
    {
        public readonly static DependencyProperty TicketProperty = DependencyProperty.Register("Ticket",
            typeof(AirTicket), typeof(FlightInfo), new PropertyMetadata(null));

        /// <summary>
        /// Возвращает или задает Информацию о билете.
        /// </summary>
        public AirTicket Ticket
        {
            get { return GetValue(TicketProperty) as AirTicket; }
            set { SetValue(TicketProperty, value); }
        }

        public FlightInfo()
        {
            
            this.InitializeComponent();

            DataContext = Ticket;
            
        }
    }



Этот контрол я использую в качестве DateTemplate для листбокса:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
      <ListBox 
            x:Name="listBox" ItemsSource="{Binding Source={StaticResource ticketsSource}}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Controls:FlightInfo Ticket="{Binding}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>



Для ListBox ItemsSource задается через CollectionViewSource. ListBox создает то кол-во записей что есть в коллекции и если в DataTemplate биндить к примеру к свойствам элемента то всё окей. Но вот как для контрола FlightInfo что в DataTemplate задать билет (Ticket) ? Так что бы он подхватил элемент этой коллекции.

Код: xml
1.
<Controls:FlightInfo Ticket="{Как это связать?}"/>



Спасибо.
...
Рейтинг: 0 / 0
Биндинг к элементу коллекции в DataTemplat'е
    #38265389
FordSoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вернее, usercontrol такой вот:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<UserControl
    x:Class="RadControlsWindows8XamlApp1.Controls.FlightInfo"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:RadControlsWindows8XamlApp1.Controls"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300"
    d:DesignWidth="400">
    <Grid>
        <StackPanel>
            <TextBlock Text="Информация о билете"/>
            <TextBlock Text="{Binding Path=Name}"/>
            <TextBlock Text="{Binding Path=Total}"/>
        </StackPanel>        
    </Grid>
</UserControl>
...
Рейтинг: 0 / 0
Биндинг к элементу коллекции в DataTemplat'е
    #38265406
FordSoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем как оказалось нужно было сделать вот так:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<ListBox 
            x:Name="listBox" ItemsSource="{Binding Source={StaticResource ticketsSource}}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Controls:FlightInfo/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>


тогда контролу FlightInfo в качестве DataContext будет задан элемент коллекции.

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


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