【发布时间】:2013-04-19 20:23:49
【问题描述】:
我想动态创建元素,所以我使用C#代码隐藏来创建一个控件。
单选按钮已创建,我想用它绑定一些元素(在本例中,我使用按钮)。
这是我的源代码
/*创建单选按钮*/
RadioButton secondaryRadio = new RadioButton()
{
Name = "secondaryRadio_" + orderOfTransport + "_" + orderOfSubTransport,
GroupName = "Transport_" + orderOfTransport + "_" + orderOfSubTransport,
IsChecked = false,
};
/*创建绑定对象*/
Binding userChoice2 = new Binding("IsChecked")
{
ElementName = "secondaryRadio_" + orderOfTransport + "_" + orderOfSubTransport,
};
/*创建按钮并绑定*/
Button outBoundButton = new Button()
{
Content = "Select",
Name = "inb_button_" + orderOfTransport + "_" + orderOfSubTransport,
};
outBoundButton.SetBinding(Button.IsEnabledProperty, userChoice2);
这是从输出窗口得到的
找不到与参考绑定的源 '元素名称=secondaryRadio_1_0'。绑定表达式:路径=IsChecked; 数据项=空;目标元素是“按钮”(名称=“inb_button_1_0”); 目标属性是“IsEnabled”(类型“布尔”)
我在这个绑定上做错了什么?我可以使用绑定对象超过 1 次吗?
非常感谢您的帮助:D
【问题讨论】:
-
您的绑定错误告诉您绑定在 UI 中的任何位置都找不到名为
"secondaryRadio_1_0"的元素。该单选按钮是否在创建后添加到 UI 中?其他需要检查的是单选按钮是否存在于 Button 可以访问的 VisualTree 中的某个位置,您可能需要确保在评估绑定之前呈现单选按钮。 -
What I did wrong for this binding?- 一切。不要在代码中创建或操作 UI 元素。 WPF不是winforms。学习 MVVM。 - 免责声明:抱歉粗鲁和如此直截了当,我只是在听 Pantera。 -
为 Pantera 加 1,不是因为粗鲁!
-
@Rachel 问题已经解决了。将元素名称更改为源。感谢您的帮助
-
@HighCore 感谢您的建议。我是 WPF 的新手。我有一个问题,如何使用 xaml 在运行时创建 UI 元素?