ContentSelector WPF
Я хочу установить другой шаблон содержимого внутри кнопки, чтобы он действовал как кнопка переключения, в зависимости от состояния моей модели представления. Я немного упростил код, но в каждом шаблоне данных содержимое кнопки рисует различные геометрии пути вместе с текстовым блоком.
Класс ContentSelector:
public class ContentSelector : DataTemplateSelector {
public DataTemplate TrueTemplate { get; set; }
public DataTemplate FalseTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
if ((bool)item)
return TrueTemplate;
return FalseTemplate;
}
}
Редактировать: добавлены свойства к кнопке, чтобы установить ее содержимое, где "Состояние" - это логическое значение в моей ViewModel, а конвертер просто возвращает "T" или "F", в зависимости от состояния моей ViewModel.
XAML:
<DataTemplate x:Key="HeaderTemplate">
<ContentPresenter>
<ContentPresenter.Content>
<DockPanel LastChildFill="False">
<Button Content="{Binding State, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource ButtonContentConverter}}" Command="{Binding ToggleCommand}">>
<Button.ContentTemplateSelector>
<ContentSelector>
<local:ContentSelector.TrueTemplate>
<DataTemplate>
<TextBlock Text="T" ... />
</DataTemplate>
</local:ContentSelector.TrueTemplate>
<local:ContentSelector.FalseTemplate>
<DataTemplate>
<TextBlock Text="F" ... />
</DataTemplate>
</local:ContentSelector.FalseTemplate>
</ContentSelector>
</Button.ContentTemplateSelector>
</Button>
</DockPanel>
</ContentPresenter.Content>
</ContentPresenter>
</DataTemplate>
Я не могу достичь точки останова в моем классе ContentSelector. Он работает в конструкторе, что означает, что содержимое кнопки меняется на "T" или "F", если я изменяю ее, чтобы вернуть соответствующий Data Template в классе ContentSelector, но когда я запускаю приложение, оно никогда не попадает на ContentSelector, а содержимое кнопка полностью пуста
Любые идеи относительно того, почему это произойдет? Я попытался установить для параметра "Содержимое кнопки" состояние моего ViewModel и изменить его на логическое значение с помощью конвертера, полагая, что содержимое кнопки должно быть настроено для запуска ContentSelector, но это не сработало.