如何(可以)从外部设置用户控件的属性?

时间:2014-10-29 13:07:12

标签: c# wpf xaml

这是我的XAML:

<UserControl x:Class="SearchResultsBox">
<ListBox ItemsSource="{Binding SearchResults}" SelectedItem="{Binding Selected}"
             Style="{StaticResource ListBoxStyle1}"
             ItemContainerStyle="{StaticResource SearchItemContainerStyle}"
             Background="{StaticResource DefaultBackground}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid Background="Transparent">
                <local:Forecast_SearchResults_ListView_Data/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
</UserControl x:Class="SearchResultsBox">

我希望能够重用此列表框,只需从外部上下文中获取新的datatemplate:

<local:SearchResultsBox>
    <DataTemplate = {ForecastDataTemplate}/>
</local>

它会将此DataTemplate放入ListBox.ItemTemplate属性中。这甚至可能吗?如果是这样,怎么样?如果没有,还有另一种方法可以达到类似的效果吗?

1 个答案:

答案 0 :(得分:1)

您可以使用如下

<local:SearchResultsBox ItemTemplate="{StaticResource ForecastDataTemplate}" />

您可以将属性连接到基础ListBox

例如

为列表框添加名称

<ListBox x:Name="list" ... />

添加属性接线

public DataTemplate ItemTemplate
{ 
    get { return list.ItemTemplate;}
    set { list.ItemTemplate = value;}
}