相关疑难解决方法(0)

属性更改时如何触发DataTemplateSelector?

我有ContentPresenter和DataTemplateSelector:

    ...

    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        var model = item as ItemControlViewModel;

        if (model.CurrentStatus == PrerequisitesStatus.Required)
        {
            return RequiredTemplate;
        }

        if (model.CurrentStatus == PrerequisitesStatus.Completed)
        {
            return FinishedTemplate;
        }

        ...

        return InProgressTemplate;
    }
Run Code Online (Sandbox Code Playgroud)

更改CurrentStatus时,将调用OnPropertyChanged.

当属性发生更改并更改ContentPresenter DataTemplate时,我需要以某种方式触发此DataTemplateSelector.有什么建议?

Threre是类似的问题: 1 2,但我不想使用任何DataTriggers,因为状态太多.

试图玩DataTriggers

    <ContentPresenter
        Grid.Column="1"
        Height="16"
        Width="16"
        Margin="3">
        <ContentPresenter.Triggers>
            <DataTrigger Binding="{Binding Path=CurrentStatus}" Value="0">
                <Setter Property="ContentPresenter.ContentTemplate" Value="{StaticResource ResourceKey=_requiredStatusTemplate}" />
            </DataTrigger>
        </ContentPresenter.Triggers>
    </ContentPresenter>
Run Code Online (Sandbox Code Playgroud)

但得到一个错误:触发器集合成员必须是EventTrigger类型:(

c# wpf datatemplateselector

30
推荐指数
2
解决办法
2万
查看次数

标签 统计

c# ×1

datatemplateselector ×1

wpf ×1