将ContentControl.Content设置为null不会更改UI

时间:2015-12-29 14:05:15

标签: c# wpf user-interface null contentcontrol

我正在使用XAML开发Windows应用商店应用(8.1)。在UI ContentControls中显示具有特定于数据的内容。为此,我成功使用了DataTemplateSelectors。

出现以下问题:初始ContentControl.Content属性为null,TemplateSelector正确返回我的个人NullTemplate。然后,将内容设置为要显示的数据对象,DataTemplateSelector成功返回正确的模板。

但是如果将Content属性设置回null,则不会发生任何事情。 UI不会调用DataTemplateSelector(即使两个***核心方法都被覆盖并实现)。

以下是ContentControl的配置

                <ContentControl 
                    Content="{Binding ButtonContent,ElementName=root}"
                    ContentTemplateSelector="{Binding ButtonContentTemplateSelector,ElementName=root}"/>

(两个Bindings都能正确提供数据。)

内容模板选择器

public class DefaultComboBoxItemTemplateSelector : DataTemplateSelector
{
    public DataTemplate NullTemplate { get; set; }

    public DataTemplate ObjectTemplate { get; set; }

    public DefaultComboBoxItemTemplateSelector() : base() { }

    protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
    {
        if (item == null) return NullTemplate;
        else return ObjectTemplate;
    }
    protected override DataTemplate SelectTemplateCore(object item)
    {
        return SelectTemplateCore(item, null);
    }
}

任何想法,为什么UI在将Content属性设置为null后不使用NullTemplate?

干杯 沃尔克

0 个答案:

没有答案