首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重绘DataTemplate of ContentControl

重绘DataTemplate of ContentControl
EN

Stack Overflow用户
提问于 2018-06-19 06:21:13
回答 1查看 88关注 0票数 0

我有下面的ContentControl

代码语言:javascript
复制
<ContentControl 
    Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedEntry}">
    <ContentControl.ContentTemplate>
        <DataTemplate DataType="controls:HCITextListEntry">
            <controls:MyCustomControl
                Text="{Binding Text}" 
                Parameter="{Binding Parameters}"/>
        </DataTemplate>
    </ContentControl.ContentTemplate>
</ContentControl>

每次SelectedEntry属性更改时,我都希望重新绘制/恢复MyCustomControl。实际上,只有属性被更新。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-19 08:21:29

您可以删除ContentTemplate并为返回MyCustomControl实例的内容绑定编写一个转换器:

代码语言:javascript
复制
<ContentControl Content="{Binding SelectedEntry,
                          RelativeSource={RelativeSource TemplatedParent},
                          Converter={StaticResource MyCustomControlConverter}}"/>

转换器:

代码语言:javascript
复制
public class MyCustomControlConverter : IValueConverter
{
    public object Convert(
        object value, Type targetType, object parameter, CultureInfo culture)
    {
        var control = new MyCustomControl();

        control.SetBinding(MyCustomControl.TextProperty,
            new Binding("Text") { Source = value });
        control.SetBinding(MyCustomControl.ParameterProperty,
            new Binding("Parameters") { Source = value });

        return control;
    }

    public object ConvertBack(
        object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50921782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档