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, но это не сработало.

0 ответов

Другие вопросы по тегам