0

Я новичок в WPF, однако ознакомлен с его ключевыми особенностями и паттерном mvvm. Нужно реализовать интерфейс такой : Пусть есть главное меню, допустим кнопка настройки, при нажатии на нее выскакивают уже другие кнопки. Я смотрел в сторону contentControl, а именно в селектор шаблонов. Я сделал подкласс DataTemplateSelector и переопределил метод SelectTemplate. Вопрос : насколько мое решение правильное, можете предложить что-нибудь лучше? И если при изменении св-ва Content у ContentControl вызывается прикрепленный селектор шаблонов, то так как мои шаблоны определены в ресурсах они создаются единственный раз при запуске программы или каждый раз эти кнопки будут создаваться при переключении? Пример

<Window.Resources>
        <DataTemplate x:Key="first">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                    <ColumnDefinition></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Button Grid.Column="0" Height="auto" Width ="auto"  Content="1" Click="button_click"></Button>
                <Button Grid.Column="1" Height="auto" Width ="auto" Content="2"></Button>
                <Button Grid.Column="2" Height="auto" Width ="auto" Content="3"></Button>
            </Grid>
        </DataTemplate>
        <DataTemplate x:Key="second">
            <TextBlock>ааааа</TextBlock>
        </DataTemplate>
        <local:Selector x:Key="selector" First="{StaticResource first}" Second="{StaticResource second}"></local:Selector>
    </Window.Resources>
    <ContentControl Name="cont" Content="1" ContentTemplateSelector="{StaticResource selector}">
    </ContentControl>
</Window>
  • https://ru.stackoverflow.com/a/765122/220553 – EvgeniyZ Jul 15 '22 at 13:49
  • Пожалуйста, не добавляйте код и/или ошибки в виде скриншотов. Неудобно читать, невозможно копировать. Добавьте текстом в вопрос (кнопка [edit]) – gil9red Jul 15 '22 at 14:06
  • https://ru.stackoverflow.com/a/1266479/373567 – aepot Jul 15 '22 at 14:17
  • подправил как просили – Agent_Gabena Jul 15 '22 at 14:18
  • в общем я погуглил, как я понял, лучшим вариантом является уйти в usercontrolы – Agent_Gabena Jul 15 '22 at 14:43
  • Вы можете делать так, как вашей душе будет угодно, нету чего либо плохого, или хорошего. Просто некоторые компоненты хорошо подходят под одну задачу, а некоторые под другую. В MVVM подходе все разделяют на мало связанные друг с другом слои, вот просто подумайте, будет-ли там удобно использовать селекторы? Если да, используйте. Я лично считаю, что они лишние, и местами неуместны, ибо под MVVM отлично подходят простые контролы, где под каждый контрол свой VM слой, свой вид, без лишнего кода и какого-либо геморроя (ссылки вам выше дали). Так что, тут решайти сами, что именно для вас лучше. – EvgeniyZ Jul 15 '22 at 14:51

0 Answers0