powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Кэширование в ContentControl
6 сообщений из 6, страница 1 из 1
Кэширование в ContentControl
    #40109009
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый. Для динамического создания контролов, использую такой код:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<ContentControl>
    <ContentControl.Style>
        <Style TargetType="ContentControl">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedMenu.Model.MenuType}" 
                             Value="{x:Static enums:MenuTypeEnum.Lot}">
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <mainData:OfferContentDataControl 
                                    DataContext="{Binding DataContext.OfferContentData, 
                                                          RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
                <DataTrigger Binding="{Binding SelectedMenu.Model.MenuType}" 
                             Value="{x:Static enums:MenuTypeEnum.ProductCard}">
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <productCards:ProductCardsControl 
                                    DataContext="{Binding DataContext.ProductCardsDataContext, 
                                                          RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>                
            </Style.Triggers>
        </Style>
    </ContentControl.Style>
</ContentControl>


Проблемка в следующем: каждый раз, когда меняется SelectedMenu.Model.MenuType, происходит пересоздание контрола. Как избежать подобное? Буду рад любым советам, замечаниям.
Заранее, спасибо!
...
Рейтинг: 0 / 0
Кэширование в ContentControl
    #40109221
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_Пав,

ContentControl Умеет отображать как шаблоны данных, так и сами элементы (inline, так сказать)
по этому, тебе надо создать отображаемые элементы и менять их в ContentControl, тогда отображаемые и переключаемые объекты всегда будут загружены и их состояние будет сохраняться.
...
Рейтинг: 0 / 0
Кэширование в ContentControl
    #40109247
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes
Супер_Пав,

ContentControl Умеет отображать как шаблоны данных, так и сами элементы (inline, так сказать)
по этому, тебе надо создать отображаемые элементы и менять их в ContentControl, тогда отображаемые и переключаемые объекты всегда будут загружены и их состояние будет сохраняться.

сделал конвертер с 2мя статик полями (2 контрола), в зависимости от состояния MenuType вывожу 1й или 2й. Проблема решилась. но хотелось какое-то решение на уровне xaml
...
Рейтинг: 0 / 0
Кэширование в ContentControl
    #40109259
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_Пав,
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<Window x:Class="WpfApp20.MainWindow"
        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"
        xmlns:local="clr-namespace:WpfApp20"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <ListBox x:Key="FirstListBox">
            <ListBoxItem>Синий</ListBoxItem>
            <ListBoxItem>Красный</ListBoxItem>
            <ListBoxItem>Зеленый</ListBoxItem>
        </ListBox>
        <ListBox x:Key="SecondListBox">
            <ListBoxItem>Теплый</ListBoxItem>
            <ListBoxItem>Холодный</ListBoxItem>
            <ListBoxItem>Мягкий</ListBoxItem>
        </ListBox>
    </Window.Resources>
    <DockPanel LastChildFill="True">
        <StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
            <RadioButton x:Name="PART_Color" Content="Цвета" GroupName="ControlSelector" IsChecked="True"/>
            <RadioButton Content="Свойства" GroupName="ControlSelector"/>
        </StackPanel>
        <ContentControl x:Name="PART_Content">
            <ContentControl.Style>
                <Style TargetType="{x:Type ContentControl}">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=PART_Color, Path=IsChecked}" Value="True">
                            <Setter Property="Content" Value="{StaticResource FirstListBox}"/>
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ElementName=PART_Color, Path=IsChecked}" Value="False">
                            <Setter Property="Content" Value="{StaticResource SecondListBox}"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ContentControl.Style>
        </ContentControl>
    </DockPanel>
</Window>
...
Рейтинг: 0 / 0
Кэширование в ContentControl
    #40109261
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно просто сделать свой contentcontrol, который будет хранить инстансы контролов у себя в памяти и переключать их через DP, по номеру. к примеру. делал так. как то, но задача была несколько иной
...
Рейтинг: 0 / 0
Кэширование в ContentControl
    #40109390
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман, спасибо за советы и решение!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Кэширование в ContentControl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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