我有一些xaml:
<StackPanel>
</StackPanel>
我想用更多的xaml填充这个xaml ...在其他地方定义:
<Border x:Key="TemplateOne">
...
</Border>
有没有办法让StackPanel填充Border xaml(与资源有关?)?
我试过这个:
<phone...>
<StackPanel>
<StackPanel.Resources>
<Border x:Key="TemplateOne">
...
</Border>
</StackPanel.Resources>
</StackPanel>
<StackPanel Resource="TemplateOne">
</StackPanel>
</phone>
但它崩溃了。
最终结果是我可以根据数据绑定项中的一些变量来绑定我的资源......
例如:
XAML:
<!-- data template for items -->
...
<StackPanel Resource="{Binding Template">
</StackPanel>
...
<!--->
CS:
foreach(var item in items)
{
if( item.type == "sausage" )
item.Template = "TemplateOne"; // On property changed
if( item.type == "egg" )
item.Template = "TemplateTwo"; // On property changed
}
::: EDIT :::
我也试过这个,但它也崩溃了,因为StackPanel没有ContentTemplate作为属性。
<Grid.Resources>
<Style x:Key="One" TargetType="StackPanel">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Height="auto" Grid.Column="0" Background="Transparent">
<Border Background="Transparent" BorderThickness="0" Width="62" Height="62" Margin="0,0,0,5">
<Image Source="{Binding Participants[0].image.thumbnail_link}" Width="62" Height="62" Stretch="UniformToFill"/>
</Border>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<StackPanel Style="{StaticResource One}">
</StackPanel>
答案 0 :(得分:0)
您可以在要放置模板的位置使用内容控件:
<ContentControl ContentTemplate="{StaticResource One}">
<ContentPresenter />
</ContentControl>
然后在手机资源中:
<DataTemplate x:Key="One">
<Border Background="Transparent" BorderThickness="0" Width="62" Height="62" Margin="0,0,0,5">
<Image Source="{Binding Participants[0].image.thumbnail_link}" Width="62" Height="62" Stretch="UniformToFill"/>
</Border>
</DataTemplate>