将样式应用于自动提示框会导致应用程序崩溃:无法应用具有TargetType的样式' FormsCustomizableTextBox'到#Text;' TextBox'

时间:2016-12-30 10:47:25

标签: c# xaml uwp

我最近开始开发UWP应用程序。

我在页面资源中定义了一个样式,如下所示:

<Style TargetType="AutoSuggestBox" x:Name="AutoSuggestBoxStyle">
            <Setter Property="FontFamily" Value="Segoe UI"/>
            <Setter Property="FontSize" Value="17"/>
            <Setter Property="FontWeight" Value="SemiLight"/>
            <Setter Property="BorderBrush" Value="Gray"/>
            <Setter Property="BorderThickness" Value="0.5"/>
            <Setter Property="PlaceholderText" Value="Type Here"/>
            <Setter Property="Margin" Value="0,10,0,0"/>
</Style>

然后我在同一页面中使用这种风格,如:

<AutoSuggestBox Style="{StaticResource AutoSuggestBoxStyle}"
                Name="SchemeSuggestBox"
                QuerySubmitted="SchemeSuggestBox_QuerySubmitted"
                SuggestionChosen="SchemeSuggestBox_SuggestionChosen"
                TextChanged="SchemeSuggestBox_TextChanged"/>

这样做会导致应用程序崩溃,但例外情况为:

Exception = {"No installed components were detected. (Exception from HRESULT: 0x800F1000)"}

并留言:

Message = "Cannot apply a Style with TargetType 'Xamarin.Forms.Platform.UWP.FormsCustomizableTextBox' to an object of type 'Windows.UI.Xaml.Controls.TextBox'."

如果我从我的AutoSuggestBox(以下行)中删除该样式,该应用程序将按预期工作:

Style="{StaticResource AutoSuggestBoxStyle}"

是什么给出的?我根本没有将这种风格应用于任何TextBox。

我已经阅读了Official Docs on Autosuggest box原来它甚至没有从TextBox类继承它确实有一个属性,就像Siva Gopal描述的那样,BugFinder暗示。显然我是有点想念它的白痴)。

可以看到有关Xamarin论坛的相关讨论here

1 个答案:

答案 0 :(得分:1)

我认为您的样式TargetType应该是:TextBox但不是:AutoSuggestBox并且需要在AutoSuggestBox上将其应用于TextBoxStyle

<强>样式:

<Style TargetType="TextBox" x:Name="AutoSuggestBoxStyle">
   ...
</Style>

样式申请:

<AutoSuggestBox TextBoxStyle={StaticResource AutoSuggestBoxStyle}>
   ...
</AutoSuggestBox>