В Silverlight какие структуры, кроме ListBox, можно использовать для связывания? - PullRequest
0 голосов
/ 18 апреля 2010

Мне нужно просто предоставить содержимое свойства в пользовательский элемент управления в Silverlight.

Мой контроль примерно такой:

<UserControl x:Class="SilverlightApplication.Header"
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"
mc:Ignorable="d"
d:DesignWidth="300" d:DesignHeight="120">

<Grid x:Name="Header_Layout">
    <StackPanel x:Name="hiHeaderContent" Width="Auto" Margin="73,8,8,8">
        <TextBlock x:Name="User:" Text="{Binding name}" />
</StackPanel>
</Grid>

Я пытаюсь использовать этот пользовательский элемент управления из другого элемента управления, где я пытаюсь передать параметр "name" в предыдущий UserControl ("Header").

Мне не нужно создавать «ListBox», так как у меня будет только 1 заголовок, поэтому я стараюсь избегать:

            <ListBox x:Name="HeaderListBox" Grid.Row="0">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <SilverlightApplication:Header/>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

для отправки учетной записи «Пользователь», используя:

HeaderListBox.ItemsSource = name;

Есть ли какая-либо другая структура, которую я могу использовать вместо ListBox для передачи параметра только один раз? Это не будет список, это просто заголовок ...

Спасибо!

Ответы [ 2 ]

1 голос
/ 18 апреля 2010

Этот фрагмент кода не будет делать то, что вы ожидаете.
ListBox.ItemsSource должен быть коллекцией, так как я предполагаю, что "name" имеет тип String, ListBox действительно привязан к коллекциисимволы.

Попробуйте изменить 2 следующие строки для работы с правильной привязкой данных:

1. HeaderListBox.ItemsSource = new string[] { name };
2. Text="{Binding}"

Требуется первое изменение, поэтому ItemsControl (например, ListBox) будет привязан к нескольким элементам, то есть к коллекции.
Второе изменение является обязательным, поскольку UserControl никак не может знать идентификатор свойства «name», поскольку вы просто присваиваете значение.

Похоже, у вас есть основные проблемы с DataBindingПозвольте мне порекомендовать вам просмотреть превосходный справочный материал на Silverlight.net: http://www.silverlight.net/learn/quickstarts/bindingtocontrols/ http://www.silverlight.net/learn/videos/all/databinding-and-datatemplates-in-xaml
http://www.silverlight.net/learn/videos/all/an-overview-of-databinding-and-datatemplates-using-expression-blend
http://www.silverlight.net/learn/videos/all/databinding-to-control-properties

0 голосов
/ 18 апреля 2010

Вы можете напрямую использовать DataContext -Property в UserControl:

<SilverlightApplication:Header DataContext="{Binding name}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...