2014-10-29 3 views
1

Это моя 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"> 

Я хочу, чтобы иметь возможность повторно использовать этот ListBox и просто хлопнуть на новый DataTemplate от внешнего контекста:

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

И это поставит этот DataTemplate в Свойство ListBox.ItemTemplate. Возможно ли это? Если да, то как? Если нет, есть ли другой способ добиться подобного эффекта?

ответ

1

вы можете использовать следующие

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

и вы можете телеграфировать свойство подстилающей ListBox

например

добавить имя ListBox

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

добавить электропроводка

public DataTemplate ItemTemplate 
{ 
    get { return list.ItemTemplate;} 
    set { list.ItemTemplate = value;} 
} 
Смежные вопросы