Установить пользовательский контроль в качестве таблицы данных - PullRequest
2 голосов
/ 28 ноября 2011

У меня есть следующий фрагмент шаблона ProductList

<Style x:Key="ProductListStyle" TargetType="{x:Type s:SurfaceListBox }">
        <Setter Property="Background" Value="{DynamicResource {x:Static s:SurfaceColors.ListBoxItemBackgroundBrushKey}}" />
        <Setter Property="SelectionMode" Value="Single" />
        <Setter Property="Height" Value="234" />
        <Setter Property="ItemTemplateSelector">
            <Setter.Value>
                <sc:ProductListTemplateSelector>
                    <sc:ProductListTemplateSelector.NormalItemTemplate>
                        <DataTemplate>
                            <StackPanel RenderTransformOrigin="0.5, 0.5"                                
                           Margin="7,0,0,0" 
                           MinWidth="171" MaxWidth="171"                                
                           MinHeight="235" MaxHeight="235">
                                <Image Margin="14,21,21,11" Source="{Binding XPath=@Image}" 
                        Height="149" Width="101" />
                                <TextBlock Text="{Binding XPath=@Name}" 
                         MaxWidth="116"
                         FontSize="12"                 
                         Margin="21,0,21,21"
                         FontFamily="Segoe360" 
                         TextAlignment="Center"
                         TextWrapping="Wrap"
                         Foreground="{DynamicResource {x:Static s:SurfaceColors.ListBoxItemForegroundBrushKey}}"  
                         HorizontalAlignment="Center" />
                            </StackPanel>

                        </DataTemplate>
                    </sc:ProductListTemplateSelector.NormalItemTemplate>

Мне нужно заменить DataTemplate этого стиля, чтобы установить его с помощью моего пользовательского элемента управления, например

<local:MyUserControl>

Сохраняя только между разделамиЯ не отображал свой элемент управления, когда мой Itemsource установлен с коллекцией myUserControl

1 Ответ

1 голос
/ 28 ноября 2011

Обычно я просто добавляю шаблон данных в Resources.Это может быть <Window.Resources> или <App.Resources>, если шаблон данных является глобальным, или FrameworkElement.Resources, если шаблон следует применять только в указанной области.Например, добавление шаблона в ListView.Resources приведет к его применению только в определенном ListView.

<Window.Resources>
    <DataTemplate DataType="{x:Type local:ProductModel}">
        <local:MyUserControl />
    </DataTemplate>
</Window.Resources>

В качестве примечания, ваш оригинальный вопрос заставляет меня поверить, что вы привязываете ListView к коллекции.MyUserControl объектов.Я действительно не рекомендовал бы это, но в этом случае вы можете использовать ContentControl в вашем DataTemplate с привязкой Content к вашему объекту, и он должен отображаться правильно.

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