UWP не может связать ICommand с пользовательским контролем - PullRequest
0 голосов
/ 24 октября 2018

В настоящее время я работаю над проектом UWP и пытаюсь привязать некоторую команду с текущей страницы к пользовательскому контролю.

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

У вас есть идеи, откуда это может прийти?

Вот мой код (главная страница):

<Grid Visibility="{Binding LoginStep, Converter={StaticResource LogConverter}, ConverterParameter='InputPin'}"
          Height="450px"  Width="280px">
            <PIN:PinInput Pin="{Binding CurrentUser.Pin, Mode=TwoWay}" x:Uid="btnPin"  SubmitCommand="{Binding AddPinCommand, Mode=TwoWay}"></PIN:PinInput>

</Grid>

Посмотреть модель:

private ICommand _addPinCommand;
        public ICommand AddPinCommand
        {
            get
            {
                return _addPinCommand ?? (_addPinCommand = new CommandBase((o) =>
                {
                    this.LoginStep = LoginStep.ChoseCompany;
                }));
            }
        }

Элемент управления пользователя:

DataContext="{Binding RelativeSource={RelativeSource Self}}"

 <Grid Grid.Row="3">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Button  Style="{StaticResource btnStyle}"  Command="{Binding SubmitCommand, Mode=TwoWay}">
                <StackPanel>
                    <Border Style="{StaticResource btnInnerStyle}" Width="100px" CornerRadius="10">
                        <TextBlock Text="{Binding SubmitButtonText}" Style="{StaticResource btnText}"></TextBlock>
                    </Border>
                </StackPanel>
            </Button>
        </Grid>




 public static readonly DependencyProperty submitCommandProperty = DependencyProperty.Register("SubmitCommand", typeof(ICommand), typeof(PinInput), null);



public ICommand SubmitCommand
        {
            get
            {
                return (ICommand)GetValue(submitCommandProperty);
            }
            set
            {
                SetValue(submitCommandProperty, value);
            }
        }

Примечание:

в журнале ошибок У меня есть: Ошибка: ошибка пути BindingExpression: свойство 'AddPinCommand' не найдено в 'PAT.Mobile.UTrakk.UWP.Views.Components.PinInput.BindingExpression: Path = 'AddPinCommand' DataItem = 'PAT.Mobile.UTrakk.UWP.Views.Components.PinInput';Целевым элементом является PAT.Mobile.UTrakk.UWP.Views.Components.PinInput '(Name =' null ');целевое свойство 'SubmitCommand' (тип 'ICommand')

Заранее спасибо,

Thomas KT

1 Ответ

0 голосов
/ 24 октября 2018

Хорошо, это было странно, но вот что, кажется, делает трюк:

<PIN:PinInput SubmitCommand="{Binding DataContext.AddPinCommand, ElementName=curPage}" Pin="{Binding CurrentUser.Pin, Mode=TwoWay}" x:Uid="btnPin"  ></PIN:PinInput>

С "curPage" = имя текущей страницы.

Я не до конца понимаю, почемуЯ должен сделать это, так как CurrentUser.Pin прекрасно работает без этой работы.

Может кто-нибудь объяснить?

...