Вопросы

WPF UserControls: имейте команду, которая доступна только внутри UserControl.

Я делаю WPF UserControl.

Внутри этого UserControl есть несколько Button, которые можно использовать при определенных условиях, так что привязка их к команде идеальна.

Команда, вызываемая этими кнопками, не должна быть доступна за пределами UserControl.

Если я сделаю свои команды закрытыми, XAML UserControl говорит, что ему нужен открытый член.

Итак, как же получить один UserControl, который имеет несколько команд внутри, но недоступен за пределами UserControl?

Пример:

<Wizard CanGoPrevious="{Binding SomeViewModelProperty}">
    <WizardPage>
        <TextBlock>Page one</TextBlock>
    </WizardPage>
</Wizard>

XAML мастера:

<DockPanel DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type wizard:Wizard}}}" LastChildFill="True">
    <StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" HorizontalAlignment="Right"> 
        <Button Content="{Binding PreviousButtonText}" Command="{Binding GoToPreviousPageCommand}"/>
    </StackPanel>
    <ContentControl ></ContentControl>
</DockPanel>

Код волшебника позади:

//Protected doesn't work. Also, this command should not be available outside of the Wizard `UserControl`
protected DelegateCommand GoToPreviousPageCommand { get; set; } 

Что назначается так в конструкторе

GoToPreviousPageCommand = new DelegateCommand(GoToPreviousPage, CanGoToPreviousPage);


    private void GoToPreviousPage()
    {
        //[...]
    }

    private bool CanGoToNextPage()
    {
        //Some usage of the Wizard's DP:
        return CanGoPrevious //&& some other stuff
    }

Не беспокойся. Это пользовательский элемент управления — вполне нормально включать логику, относящуюся к пользовательскому интерфейсу, в программный код.   —  person J4N    schedule 04.09.2015

Читать:
Настройка приглашения PowerShell - эквивалент CMD $ M $ P $ _ $ + $ G?

@Will Хорошо, но не удается предоставить UserControl общедоступный доступ к командам, которые должны быть доступны только для внутреннего использования.   —  person J4N    schedule 04.09.2015

Похожие записи

Внешний ключ Gorm Many-to-one только для одной модели

admin

Невозможно вызвать лямбда-функцию в методе шлюза API с использованием шаблона облачной информации

admin

Подсчет вхождений символа в текстовый файл

admin

Создание Python 3 / Pygame Нажмите любую клавишу, чтобы продолжить стартовую страницу

admin

aws-sdk отправить запрос с IAM Auth

admin

Как вручную экранировать литералы SQL в Python

admin