Я хочу динамически менять свой контент с AppBar с помощью этого кода:
<Page.Resources>
<local:AppBarSelector x:Key="myAppBarSelector"/>
</Page.Resources>
<Page.BottomAppBar>
<AppBar>
<ContentControl Content="{Binding SelectedItem, ElementName=listBox}" ContentTemplateSelector="{StaticResource myAppBarSelector}">
<ContentControl.Resources>
<DataTemplate x:Key="1">
<TextBlock Text="Hallo Welt 1" Foreground="White" />
</DataTemplate>
<DataTemplate x:Key="2">
<TextBlock Text="Hallo Welt 2" Foreground="White" />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</AppBar>
</Page.BottomAppBar>
И это мой код позади:
public class AppBarSelector : DataTemplateSelector
{
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
Debug.WriteLine((string)item);
if (item == null) return base.SelectTemplateCore(item, container);
var contentControl = (ContentControl)container;
var templateKey = (string)item;
return (DataTemplate)contentControl.Resources[templateKey];
}
}
Но этот метод называется нервнее. Даже функция Debug.WriteLine
. Где моя ошибка?
listBox.ItemsSource = new List<string> { "1" , "2", "3" , "4"};
У меня есть второй ContentControl, который использует другойPage.Resource
, но также и строку элемента listView - это прекрасно работает, но здесь функция не вызывается... - person Cilenco   schedule 28.04.2013ItemsSource
для привязки к свойству в VM - этоObservableCollection<string>
(не List‹›)). Также посмотрите на это. Кажется, ваша привязка не срабатывает (у меня нет возможности проверить это, поэтому я просто даю подсказки). Окончательное решение - использовать MultiBinding и заставить его "измениться"... - person NSGaga-mostly-inactive   schedule 29.04.2013try to make a small 'primer' that repeats the issue
(со всем кодом позади, ListBox XAML и т. д.), и я могу взглянуть - это также поможет вам добраться до сути. Вероятно, это что-то тривиальное, как я уже сказал, но тогда вы должны быть последовательны. Дайте мне знать, и я могу ответить, но с некоторыми подробностями от вас. - person NSGaga-mostly-inactive   schedule 29.04.2013ObservableCollection<string>
, но это не помогает. Сейчас попробую использовать другой способ. Есть ли событие, которое я могу привязать к моему второму ContentControl при изменении содержимого из ContentControl1? Примерно так:<ContentControl Content="{Binding EVENT, ElementName=ContentControl1}"
. И что я могу сделать с ошибкойdeclared prefix
? - person Cilenco   schedule 29.04.2013