WP7 - 控制模板 - 未知异常

时间:2012-04-30 10:09:25

标签: c# .net windows-phone-7 xaml

我正在通过一本初学者的书来学习wp7,在一本基本的教程中,我遇到了一个未知的异常。

应用程序资源(App.xaml)文件中定义的控件模板如下所示。

<Application.Resources>
    <Style x:Key="CustomButtonStyle" TargetType="Button">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <StackPanel>
                            <Image Source="Images\image.png" Width="200" Height="300" />
                            <TextBlock Text="{TemplateBinding Content}" TextAlignment="Center" />
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Application.Resources>

然后当我创建一个使用此模板的按钮时,例如

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
            <Button x:Name="CustomButton" Width="250" Height="350" Content="Custom Button" Style="{StaticResource CustomButtonStyle}" />
        </Grid>

我总是得到一个未知的异常。我把它缩小到了

Text="{TemplateBinding Content}"

控件模板中的属性但是,为什么会出现异常?我有内容,它是一个字符串格式。我不知道它还能是什么? 当我创建一个项目时,我的目标是Windows Phone 7.1。我不知道有什么变化吗? 任何帮助表示赞赏。 谢谢 乔

1 个答案:

答案 0 :(得分:1)

<TextBlock Text="{TemplateBinding Content}" TextAlignment="Center" />更改为<ContentPresenter HorizontalAlignment="Center" />

           <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border Width="{TemplateBinding Width}"
                            Height="{TemplateBinding Height}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">
                        <StackPanel>
                            <Image Width="200"
                                   Height="300"
                                   Source="Images\image.png" />
                            <ContentPresenter HorizontalAlignment="Center" />
                        </StackPanel>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

Some details about ContentControls