此XAML在Windows应用商店应用中不起作用:
<ContentControl Grid.Column="1" Content="{StaticResource AddUserStep1Control}" />
将用户控件作为资源加载到App.xaml
中,如下所示:
<featuresUsers:BoyGirlPickerUserControl x:Key="AddUserStep1Control" />
控件看起来像这样:
<UserControl>
.. namespace etc.
<Grid>
<Grid.Resources>
<Style TargetType="Button">
<Setter Property="Margin" Value="10" />
<Setter Property="FontSize" Value="96" />
<Setter Property="Padding" Value="50, 20" />
</Style>
</Grid.Resources>
<StackPanel>
<TextBlock HorizontalAlignment="Center" FontSize="96" Margin="0,50,0,30">I am a...</TextBlock>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button>Boy</Button>
<Button>Girl</Button>
</StackPanel>
</StackPanel>
</Grid>
</UserControl>
据我了解,ContentControl
可以包含任何内容。我将Content
属性绑定到视图模型,然后从应用程序资源获取UserControl
并将其设置在view-model属性上,但这又导致了另一个错误,导致我尝试全部在XAML。
我能够在视图模型中的代码中实例化TextBlock
并将其设置在绑定属性上,并在UI中查看该控件和文本,但UserControl
则不然。 / p>
以下是错误消息:
类型的第一次机会异常 &#39; Windows.UI.Xaml.Markup.XamlParseException&#39;发生在 GlyphWriterStoreApp.exe
WinRT信息:无法分配给属性 &#39; Windows.UI.Xaml.Controls.ContentControl.Content&#39;因为类型 &#39; Windows.UI.Xaml.Controls.UserControl&#39;无法分配到该类型 &#39;对象&#39 ;. [行:55位置:45]
其他信息:与此错误代码相关联的文本可以 找不到。
无法分配属性 &#39; Windows.UI.Xaml.Controls.ContentControl.Content&#39;因为类型 &#39; Windows.UI.Xaml.Controls.UserControl&#39;无法分配到该类型 &#39;对象&#39 ;. [行:55位置:45]
如果存在此异常的处理程序,则程序可能是安全的 继续进行。
更新1
所以问题是将资源控制设置为Content
。我刚刚尝试使用TextBlock
App.xaml
并在{{1}}中声明了该错误。
答案 0 :(得分:1)
似乎是一个已知问题。
这很奇怪,因为即使在代码中加载资源,产生任何控件的实例,也不起作用,而在代码中实例化控件确实有效,即使它们是相同的。
他们只是对象引用。很奇怪。看起来我必须在运行时动态实例化我的控件类型或使用模板选择器。