Параметр команды WPF, как использовать - PullRequest
0 голосов
/ 04 февраля 2019

Я хочу иметь два вида статуса ** (SmallPay, Credit) **, но это определяется предыдущим UserControl(ItemDetail.xaml)

ItemDetail.xaml

<Border Background="#fb5106" CornerRadius="8" Cursor="Hand">
    <Border.InputBindings>
       <MouseBinding MouseAction="LeftClick" Command="{Binding Path=ClickPhoneNumberCommand}" CommandParameter="A"/>
    </Border.InputBindings>
    <TextBlock Text="SmallPay" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White" FontSize="32" />
</Border>

<Border Grid.Column="2" Background="#e7001f" CornerRadius="8" Cursor="Hand">
    <Border.InputBindings>
        <MouseBinding MouseAction="LeftClick" Command="{Binding Path=ClickPhoneNumberCommand}" CommandParameter="B"/>
        </Border.InputBindings>
    <TextBlock Text="Credit" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="White" FontSize="32" />
</Border>

ViewModel.cs

public DelegateCommand ClickItemCommand
{
    get
    {
        return new DelegateCommand(delegate ()
        {
            SelectedPopupType = PopupTypes.ItemDetail;
                IsShowPopup = true;
        });
    }
}

public DelegateCommand ClickPhoneNumberCommand
{
    get
    {
        return new DelegateCommand(delegate ()
        {
            SelectedPopupType = PopupTypes.PhoneNumber;
            IsShowPopup = true;
        });
    }
}

Затем я хочу получить commandParameter в UserControl, открытом с помощью 'ClickPhoneNumberCommand'.Но я не знаю как?Есть ли способ без ViewModel?

1 Ответ

0 голосов
/ 04 февраля 2019

Ваш код возвращает новый делегат для каждого возврата свойства ClickItemCommand.Я не думаю, что это будет работать с WPF из-за того, как работают объектные ссылки, я думаю, вам следует использовать поле для хранения одной ссылки на неизменяемый Command, например:

private readonly DelegateCommand clickItemCommand;

public MyViewModel()
{
    this.clickItemCommand = new DelegateCommand( this.OnItemClick );
}

private void OnItemClick(Object parameter)
{
    this.SelectedPopupType = PopupTypes.ItemDetail;
    this.IsShowPopup = true;
}

public DelegateCommand ClickItemCommand
{
    get { retrn this.clickItemCommand; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...