Uwp 带刀片的多视图
我正在尝试创建一个UWP应用程序,允许用户打开新窗口。我创建新窗口的基础是 当新视图包含刀片(来自Microsoft.Toolkit.Uwp.UI.Controls)时,我遇到了一个奇怪的错误。错误是: System.Runtime.InteropServices.COMException:调用COM组件时返回错误HRESULT E_FAIL。 在Windows.UI.Xaml.FrameworkElement.MeasureOverride(可用大小大小大小) 要复制此错误,请在SecondaryViewPage.xaml第49行的链接示例中添加以下代码:Uwp 带刀片的多视图,uwp,uwp-xaml,windows-community-toolkit,Uwp,Uwp Xaml,Windows Community Toolkit,我正在尝试创建一个UWP应用程序,允许用户打开新窗口。我创建新窗口的基础是 当新视图包含刀片(来自Microsoft.Toolkit.Uwp.UI.Controls)时,我遇到了一个奇怪的错误。错误是: System.Runtime.InteropServices.COMException:调用COM组件时返回错误HRESULT E_FAIL。 在Windows.UI.Xaml.FrameworkElement.MeasureOverride(可用大小大小大小) 要复制此错误,请在Seconda
<controls:BladeView x:Name="BladeView" Grid.Column="0"
Padding="0"
BladeMode="{Binding BladeMode.Value}">
<controls:BladeItem
TitleBarVisibility="Collapsed"
IsOpen="True" Width="300" />
</controls:BladeView>
然后执行以下步骤:
有谁能确定是什么导致了错误,或者告诉我独立视图中的刀片是否无法工作?很有趣。由于某种原因,
BladeItem
的默认样式实际上导致了该问题
由于您已经将标题栏可见性设置为已折叠,因此修复此问题非常简单。您只需将以下样式应用于您的BladeItem
。这与默认网格之间的唯一区别是内部网格
已被注释掉。是的,这就是问题所在
<Style x:Key="MyBladeStyle" TargetType="controls:BladeItem">
<Setter Property="VerticalContentAlignment" Value="Stretch" />
<Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" />
<Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
<Setter Property="TabNavigation" Value="Local" />
<Setter Property="IsHoldingEnabled" Value="True" />
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Stretch" />
<Setter Property="Margin" Value="0" />
<Setter Property="MinWidth" Value="{ThemeResource GridViewItemMinWidth}" />
<Setter Property="MinHeight" Value="{ThemeResource GridViewItemMinHeight}" />
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="IsTabStop" Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:BladeItem">
<Grid BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!--<Grid Background="{TemplateBinding TitleBarBackground}"
Visibility="{TemplateBinding TitleBarVisibility}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Margin="4,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Foreground="{TemplateBinding TitleBarForeground}"
Text="{TemplateBinding Title}" />
<Button Name="CloseButton"
Grid.Column="1"
TabIndex="0"
HorizontalAlignment="Right"
AutomationProperties.Name="Cancel"
Background="{TemplateBinding CloseButtonBackground}"
Content=""
FontFamily="Segoe MDL2 Assets"
Foreground="{TemplateBinding CloseButtonForeground}" />
</Grid>-->
<ContentPresenter Grid.Row="1"
VerticalAlignment="Stretch"
Background="{TemplateBinding Background}"
Visibility="{TemplateBinding IsOpen}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
注意,现在有了上面的两行代码,您不再需要注释掉内部的
网格
什么是BladeView
?你能分享一个我们可以重现你的问题的例子吗?我已经给出了一个例子,它是来自GitHub的Microsoft多视图示例,我的问题中的代码插入到SecondaryViewPage.xaml的第49行。你是否也将此作为一个问题发布在UWP toolkit GitHub上。。。也许微软的某个人可以拿起它看看它是否是UWP错误?@depchie我会的,但我想先等OP批准这确实是问题的原因。:)不过我很有信心。打得好!让OP重新测试:)@RyanRatenKuhar太棒了!我还要报告这个问题。非常好的发现。:)@我试着在他们的样本GitHub上报告这个问题,他们拒绝了我,把我送到他们的付费支持中心。也许我只是在错误的地方?
<!-- Add the following to the default style -->
<Setter Property="TitleBarForeground" Value="Black" />
<Setter Property="CloseButtonForeground" Value="Black" />