无法在Blend中显示AutoCompleteBox

时间:2011-09-07 07:32:36

标签: silverlight windows-phone-7 expression-blend

我有一个Autocompletebox控件的问题,它在Blend中不起作用,它抱怨InputScope属性的TypeConverter无法从字符串转换。控件在运行时工作正常,并在VS2010设计器中显示正常。

有一种简单的方法可以完全禁用控件,还是只在设计时将其换成简单的文本块?

更好的是,有人知道如何让AutoCompleteBox在混合中工作吗?

编辑: 我发现如果我只是删除InputScope属性的设置,那么AutoCompleteBox显示正常。那么在设计模式下,如何以编程方式删除XAML的那一部分(InputScope =“搜索”)?

2 个答案:

答案 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"/>