gpt4 book ai didi

WPF 并将 ToolTip 绑定(bind)到 DisplayAttribute

转载 作者:行者123 更新时间:2023-12-04 20:24:49 24 4
gpt4 key购买 nike

在我的 View 模型中,我已将 DisplayAttributes 添加到我的属性中,现在想将我的 TextBox 控件的 ToolTip 属性绑定(bind)到 DisplayAttribute 的 Description 属性。

我找到了this SO question它处理描述的阅读,但无法弄清楚如何使用计算的描述填充工具提示。

最佳答案

这似乎是一种迂回的方式,因为 WPF 不支持此属性,因此您将在 View 模型中输入属性,而 View 模型将查找它们。它们可以是任何内部格式。

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

一个带有两个文本框的小 XAML 文件:

<Grid >
<StackPanel>
<TextBox Text="{Binding FirstName}" ToolTip="{Binding Descriptions[FirstName]}"/>
<TextBox Text="{Binding LastName}" ToolTip="{Binding Descriptions[LastName]}"/>
</StackPanel>
</Grid>

代码隐藏:
        DataContext = new DisplayViewModel();

和具有两个属性的基本 View 模型:
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; } }
}

关于WPF 并将 ToolTip 绑定(bind)到 DisplayAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5724965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com