Контроль содержимого Silverlight в ItemTemplate - PullRequest
2 голосов
/ 01 декабря 2011

Я пытаюсь выяснить, почему этот код

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

<UserControl.Resources>
    <Button x:Key="button" Content="{Binding}" />
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="Yellow">
    <ListBox Name="listBox">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <ContentControl Content="{StaticResource button}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

using System.Collections.Generic;

namespace TestSilverlight
{
    public partial class MainPage
    {
        public MainPage()
        {
            InitializeComponent();
            listBox.ItemsSource = new List<string> {"a", "b", "c"}; //without this line it works
        }
    }
}

не работает. Выдает исключение Parser (не может установить свойство Content в ContentControl). Без привязки работает отлично. Это нормально?

1 Ответ

0 голосов
/ 01 декабря 2011

Похоже, что-то не так с вашей логикой. Если вы определяете ресурс типа Button - это делает один экземпляр кнопки. Вы не можете иметь один экземпляр элемента управления, являющийся содержимым нескольких элементов управления.

Почему бы просто не сделать это:

<ListBox Name="listBox">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...