Основываясь на предыдущей работе, я подумал о том, чтобы усилить логику повтора тремя способами:
Action
метода расширения static class ActionExtensions
{
public static void InvokeAndRetryOnException<T> (this Action action, int retries, TimeSpan retryDelay) where T : Exception
{
if (action == null)
throw new ArgumentNullException("action");
while( retries-- > 0 )
{
try
{
action( );
return;
}
catch (T)
{
Thread.Sleep( retryDelay );
}
}
action( );
}
}
Затем метод можно вызвать таким образом (конечно, можно использовать и анонимные методы):
new Action( AMethodThatMightThrowIntermittentException )
.InvokeAndRetryOnException<IntermittentException>( 2, TimeSpan.FromSeconds( 1 ) );
Параметр неверен. container '
blockquote>Для объяснения этого поведения нам нужно проверить стиль
NavigationView
в файле Generic.xaml .<Button x:Name="TopNavOverflowButton" Grid.Column="4" Content="More" Style="{StaticResource NavigationViewOverflowButtonStyleWhenPaneOnTop}" Visibility="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.OverflowButtonVisibility}"> <Button.Flyout> <Flyout Placement="Bottom"> <Flyout.FlyoutPresenterStyle> <Style TargetType="FlyoutPresenter"> <Setter Property="Padding" Value="0,8" /> <!-- Set negative top margin to make the flyout align exactly with the button --> <Setter Property="Margin" Value="0,-4,0,0" /> </Style> </Flyout.FlyoutPresenterStyle> <NavigationViewList x:Name="TopNavMenuItemsOverflowHost" ItemTemplate="{TemplateBinding MenuItemTemplate}" ItemTemplateSelector="{TemplateBinding MenuItemTemplateSelector}" ItemContainerStyle="{TemplateBinding MenuItemContainerStyle}" ItemContainerStyleSelector="{TemplateBinding MenuItemContainerStyleSelector}" SingleSelectionFollowsFocus="False" IsItemClickEnabled="True"> <ListView.ItemContainerTransitions> <TransitionCollection /> </ListView.ItemContainerTransitions> </NavigationViewList> </Flyout> </Button.Flyout> </Button>
Как видите, Больше элементов хранятся в TopNavMenuItemsOverflowHost
NavigationViewList
. и это контейнерFlyout
. Flyout - это ленивый контроль загрузки. Если он не всплывает, его содержимое не будет загружено. Вот почему контейнер отсутствует.Я думаю, что нецелесообразно фокусировать неокончательный пункт в
TopNavMenuItemsOverflowHost
. если вы хотите правильно выбрать элемент, убедитесь, что ширина окна достаточна, чтобы все элементы отображались вNavigationView
.