0

我想动态创建元素,所以我使用 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);

这就是从输出窗口得到的

找不到引用“ElementName=secondaryRadio_1_0”的绑定源。绑定表达式:路径=IsChecked;数据项=空;目标元素是“按钮”(名称=“inb_button_1_0”);目标属性是“IsEnabled”(类型“布尔”)

我为这个绑定做错了什么?我可以使用绑定对象超过 1 次吗?

非常感谢您的帮助:D

4

2 回答 2

3

ElementName您应该直接指定绑定,而不是指定Source

Binding userChoice2 = new Binding("IsChecked")
{
    Source = secondaryRadio
};
于 2013-04-25T19:59:27.250 回答
0

关于ElementName:我看不到这两个 UIElement 最终出现在一些常见的 Visual Tree 中 - 你不能指望这可以与两个不同的对象一起使用。

作为一个忠告,几乎总是没有必要“动态”生成 UIElements。通常,使用 ItemsControl 和 Items 的 DataTemplate 并将 ItemsSource 绑定到某些对象更容易实现您想要做的事情。

如果你真的想像做 Windows 窗体一样做 WPF,那么你应该听从 Jon 的建议。

于 2013-04-25T20:03:26.423 回答