将资源分配给CustomMessageBox.Content时出现ArgumentException

时间:2014-08-01 11:58:15

标签: c# xaml windows-phone-8

我使用Windows Phone Toolkit在Windows Phone 8应用上工作。 使用此扩展提供的CustomMessageBox时,必须将Content属性设置为您希望此控件显示的任何内容。 当我将内容设置为在代码中创建的StackPanel时,它可以正常工作。但是,当我在XAML中创建一个StackPanel时,在Application.Resources中这样:

<Application.Resources>
    <StackPanel x:Key="MessageBox">
        <TextBlock Text="Teste"/>
    </StackPanel>
</Application.Resources>

并将其分配给CustomMessageBox

var messageBox = new CustomMessageBox();
messageBox.Content = Application.Current.Resources["MessageBox"];

它抛出一个ArgumentException告诉我&#34; Value不在预期的范围内&#34;。

当我将此StackPanel包装到另一个StackPanel中时,使用以下代码创建:

var sp = new StackPanel();
sp.Children.Add(Application.Current.Resources["MessageBox"];

这次抛出一个InvalidOperationException,说&#34; Element已经是另一个元素&#34;的孩子了。

所以我想我在XAML中以错误的方式声明了一个应用程序资源!

1 个答案:

答案 0 :(得分:2)

试试这个。它是ContentTemplate。

XAML


<Application.Resources>
    <local:LocalizedStrings xmlns:local="clr-namespace:PivotApp1" x:Key="LocalizedStrings"/>
    <DataTemplate x:Key="MessageBoxTemp">
        <StackPanel>
            <TextBlock Text="Teste"/>
        </StackPanel>
    </DataTemplate>
</Application.Resources>

C#


messageBox.ContentTemplate = (DataTemplate)Application.Current.Resources["MessageBoxTemp"];