Я нашел уродливый обходной путь ... но был бы рад, если бы кто-нибудь мог показать мне лучший способ:
В package.json я объявил две настройки. Тот, у которого есть основной сценарий, которому нужны все еще полученные переменные ENV, и одна запись сценария, которая загружает сначала среду, а затем запускает задачу основного сценария в этой среде.
Трудно объяснить, легко показать ... посмотрите на это:
"scripts": {
...
"IOS_internalTest": "source ./fastlane/ios_env && IOS_DEPLOY_TYPE=deploy_internalTest npm run IOS_runDeployment",
"IOS_betaTest": "source ./fastlane/ios_env && IOS_DEPLOY_TYPE=deploy_betaTest npm run IOS_runDeployment",
"IOS_runDeployment": "bundle exec fastlane ios $IOS_DEPLOY_TYPE",
...
}
Первая запись source
моего файла, где находятся все мои экспорты ENV (например, export BIMBOM=FooBar
). выполняет npm run IOS_doInternalTest
. Поскольку он запускается в том же контексте оболочки, переменные ENV, которые я source
редактировал ранее, все еще доступны.
Слава вам, если вы получили решение в одну строку
Вопрос, с которым вы связаны, должен работать для вашей конкретной ситуации. Пока вы используете ObservableCollection для своего источника, вы можете установить:
<ListBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding MyCollection}" ItemTemplate="{StaticResource MyTemplate}/>
Это будет гарантировать, что при добавлении элементов фокус будет отдан новому элементу, а затем менеджеру фокуса (взгляните на первый ответ в этом поток) должен уделить внимание TextBox. В статье MSDN представлен полезный пример, помещенный в шаблон здесь:
<DataTemplate x:Key="MyTemplate" DataType="{x:Type Classes:MyClass}">
<StackPanel FocusManager.FocusedElement="{Binding ElementName=firstButton}">
<Button Name="firstButton" />
</StackPanel>
</DataTemplate>