【问题标题】:Adding properties to be used in XAML dynamically动态添加要在 XAML 中使用的属性
【发布时间】:2021-08-16 21:32:20
【问题描述】:

是否可以添加动态属性以在不同的类中使用?我的意思是,例如我创建了一个“留下反馈”按钮,当我点击它时,我希望它将那个人的名字发送到服务器。我想在定义这些按钮时输入这些人的名字,例如:

private void LeaveFeedback(object sender, EventArgs e) {

    Button btn = sender as Button;
    // I actually do not know how to access that property as well.
    // Maybe something like a dictionary to specify the dynamic properties as `PropertyName: PropertyValue` pair would be efficient.

}
<Button Click="LeaveFeedback" FeedbackPerson="some_person" UserID="some_person_id" .../>
<Button Click="LeaveFeedback" FeedbackPerson="some_person_2" UserID="some_person_2_id" .../>

等等。

我该怎么做?我应该声明一个特定的控件吗?

【问题讨论】:

  • 构建一个人视图模型来保存数据。模板化成一个按钮和每个人需要的任何东西。
  • 你看过附加属性吗?

标签: c# wpf xaml


【解决方案1】:

您可以将Tag 属性设置为自定义或匿名类型的实例:

Button btn = sender as Button;
btn.Tag = new { FeedbackPerson = "some_person", UserID = "some_person_id" };

检索灵活但无类型且脆弱:

dynamic tag = btn.Tag;
string feedbackPerson = tag.FeedbackPerson.ToString();
string iserID = tag.UserID.ToString();

更优雅的解决方案是创建两个attached properties,您可以像这样设置和获取:

Behavior.SetFeedbackPerson(btn, "some_person");
string feedbackPerson = Behavior.GetFeedbackPerson(btn);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多