首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并将ToolTip绑定到DisplayAttribute

并将ToolTip绑定到DisplayAttribute
EN

Stack Overflow用户
提问于 2011-04-20 10:41:47
回答 1查看 3.7K关注 0票数 4

在我的视图模型中,我已经将DisplayAttributes添加到我的属性中,并且现在希望将我的TextBox控件的ToolTip属性绑定到DisplayAttribute的Description属性。

我找到了处理描述读取的this SO question,但是不知道如何使用计算出的描述填充ToolTip。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-20 12:25:57

由于WPF不支持此属性,因此您将在view-model中输入属性,view-model将查找它们,因此这似乎是一种间接的方法。它们可以是任何内部格式。

在任何情况下,这里都是您所说的问题的演示。我们向文本框绑定到的类添加一个Descriptions属性。该属性是将属性名称映射到描述(即属性)的字典。在视图模型的静态构造函数中,我们查找所有属性并填充字典。

包含两个文本框的小型XAML文件:

代码语言:javascript
复制
<Grid >
    <StackPanel>
        <TextBox Text="{Binding FirstName}" ToolTip="{Binding Descriptions[FirstName]}"/>
        <TextBox Text="{Binding LastName}" ToolTip="{Binding Descriptions[LastName]}"/>
    </StackPanel>
</Grid>

代码隐藏:

代码语言:javascript
复制
        DataContext = new DisplayViewModel();

和一个具有两个属性的基本视图模型:

代码语言:javascript
复制
public class DisplayViewModel
{
    private static Dictionary<string, string> descriptions;

    static DisplayViewModel()
    {
        descriptions = new Dictionary<string,string>();
        foreach (var propertyName in PropertyNames)
        {
            var property = typeof(DisplayViewModel).GetProperty(propertyName);
            var displayAttributes = property.GetCustomAttributes(typeof(DisplayAttribute), true);
            var displayAttribute = displayAttributes.First() as DisplayAttribute;
            var description = displayAttribute.Name;
            descriptions.Add(propertyName, description);
        }
    }

    public DisplayViewModel()
    {
        FirstName = "Bill";
        LastName = "Smith";
    }

    public static IEnumerable<string> PropertyNames { get { return new[] { "FirstName", "LastName" }; } }

    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Display(Name = "Last Name")]
    public string LastName { get; set; }

    public IDictionary<string, string> Descriptions { get { return descriptions; } }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5724965

复制
相关文章

相似问题

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