我有一个Autocompletebox控件的问题,它在Blend中不起作用,它抱怨InputScope属性的TypeConverter无法从字符串转换。控件在运行时工作正常,并在VS2010设计器中显示正常。
有一种简单的方法可以完全禁用控件,还是只在设计时将其换成简单的文本块?
更好的是,有人知道如何让AutoCompleteBox在混合中工作吗?
编辑: 我发现如果我只是删除InputScope属性的设置,那么AutoCompleteBox显示正常。那么在设计模式下,如何以编程方式删除XAML的那一部分(InputScope =“搜索”)?
答案 0 :(得分:0)
这很奇怪,在我为这个控件创建了一个默认样式之后,它不再给我任何错误......而且我不知道为什么......我认为这是一个bug。 :)
<Style TargetType="toolkit:AutoCompleteBox">
<Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/>
<Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}"/>
<Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
<Setter Property="FontFamily" Value="{StaticResource PhoneFontFamilyNormal}"/>
<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
<Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Content="{Binding}" Margin="8,7"/>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Padding" Value="6,0,6,4"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="toolkit:AutoCompleteBox">
<Grid>
<TextBox x:Name="Text" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" InputScope="{TemplateBinding InputScope}" Opacity="{TemplateBinding Opacity}" Padding="{TemplateBinding Padding}" Style="{TemplateBinding TextBoxStyle}"/>
<Popup x:Name="Popup">
<ListBox x:Name="Selector" BorderBrush="{StaticResource PhoneTextBoxEditBorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="White" Foreground="{TemplateBinding Foreground}" FontWeight="{TemplateBinding FontWeight}" FontStyle="{TemplateBinding FontStyle}" FontSize="{TemplateBinding FontSize}" FontFamily="{TemplateBinding FontFamily}" IsTabStop="False" ItemTemplate="{TemplateBinding ItemTemplate}" ItemContainerStyle="{TemplateBinding ItemContainerStyle}" Opacity="{TemplateBinding Opacity}" Padding="0,8"/>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 1 :(得分:0)
事实证明这非常容易。
只需将mc:Ignorable前缀添加到要忽略的属性即可。 http://msdn.microsoft.com/en-us/library/aa350024.aspx
换句话说,只需在InputScope属性前加上d:
<toolkit:AutoCompleteBox d:InputScope="Search"/>