Как изменить itemTemplate элемента в itemControl во время выполнения в silverlihgt 4 - PullRequest
0 голосов
/ 17 августа 2010

У меня есть ItemControl в silverlight 4 с Canvas в качестве ItemPanel, идея состоит в том, чтобы смоделировать область холста с помощью перетаскивания и добавления элементов.У ItemsControl есть ItemTemplate с изображением и одной кнопкой.

Идея состоит в том, что когда кнопка itemTemplate нажимает изменение itemTemplate.

Часть моего кода: (Управление элементами)

<ItemsControl ItemsSource="{Binding Devices}"
              ItemTemplate="{StaticResource deviceItemTemplate}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas
                    HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                    MouseLeftButtonDown="Canvas_MouseLeftButtonDown" 
                    MouseMove="Canvas_MouseMove" 
                    LostMouseCapture="Canvas_LostMouseCapture"></Canvas>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>

(ItemTemplate)

<DataTemplate x:Key="deviceItemTemplate">
    <ContentControl>
        <Grid IsHitTestVisible="True" Background="Transparent">
            <Grid.RowDefinitions>
                <RowDefinition></RowDefinition>
                <RowDefinition Height="30"></RowDefinition>
            </Grid.RowDefinitions>
            <Image IsHitTestVisible="False" Grid.Row="0" Stretch="UniformToFill" 
                   Width="50" Height="50" 
                   Source="{Binding ImagePath}"/>
            <Button Grid.Row="1" Content="{Binding EditarDispositivoCommand.DisplayName}" Command="{Binding EditarDispositivoCommand.Command}"></Button>
        </Grid>
        <ContentControl.RenderTransform>
            <TranslateTransform X="{Binding X, Mode=TwoWay}" Y="{Binding Y, Mode=TwoWay}"></TranslateTransform>
        </ContentControl.RenderTransform>
    </ContentControl>
</DataTemplate>

Я пытаюсь получить это при нажатии кнопки в itemTemplate, шаблон этого элемента изменяется на другой шаблон из ресурса.

Было ли этовозможно, или я иду плохим путем.Большое спасибо.

Ответы [ 2 ]

1 голос
/ 17 августа 2010

Вы можете попробовать использовать DataTemplateSelector для Silverlight - он не встроен, как WPF, но этого можно добиться с помощью дополнительного кода.

Вот хороший пример из CodeProject: http://www.codeproject.com/KB/silverlight/SLTemplateSelector.aspx

Просто добавьте элемент для просмотра модели, чтобы указать шаблон ...

0 голосов
/ 08 марта 2011

Я просто использовал следующую статью, чтобы сделать то, что вы предложили.У меня есть два шаблона элементов, определенных для вида, и я могу программно изменять шаблон элемента во время выполнения, хотя codebehind

http://weblogs.asp.net/psheriff/archive/2010/08/25/change-templates-dynamically-in-silverlight.aspx

Надеюсь, это поможет (в примере также используется кнопка для изменения шаблона элемента)

...