c# - 在代码隐藏中绑定(bind)动态创建的控件

标签 c# wpf data-binding

我动态创建了弹出窗口,这些弹出窗口是在运行时在 C# 代码中创建的,其中填充了来自 xaml 的内容,并且很难在如何在代码中绑定(bind)它们。现在,当它被创建时,它循环遍历 xaml 中的项目并为每个项目创建一个关联的复选框:

ListView listView = new ListView();

        //Create ListViewItem for each answer
        foreach (Answer ans in Questions.DataUsedQuestion.AnswerOptions)
        {
            ListViewItem item = new ListViewItem();
            StackPanel panel = new StackPanel();
            CheckBox checkBox = new CheckBox();
            TextBlock text = new TextBlock();

            panel.Orientation = Orientation.Horizontal;
            checkBox.Margin = new Thickness(5, 0, 10, 2);
            text.Text = ans.DisplayValue;

            panel.Children.Add(checkBox);
            panel.Children.Add(text);

            item.Content = panel;

            listView.Items.Add(item);
        }

我在应用程序的其他地方有类似的控件,这些控件像这样绑定(bind)在 xaml 中:

<TreeView ItemsSource="{Binding Path=AnswerOptions}" Height="320" Padding="5,5,5,5" Background="Transparent">
<TreeView.ItemTemplate >
    <HierarchicalDataTemplate ItemsSource="{Binding Path=AnswerOptions}" 
                                DataType="{x:Type QSB:Answer}" >
        <StackPanel Orientation="Horizontal" Margin="0,2,0,2">

            <CheckBox IsChecked="{Binding Path=IsSelected}" >
            </CheckBox>
            <TextBlock Text="{Binding DisplayValue}" Margin="5,0,0,0" />
        </StackPanel>
    </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

我怎样才能在后面的代码中完成类似上面的事情?

最佳答案

查看 MSDN 文章 How to: Create a Binding in Code .

你可以这样写:

Binding binding = new Binding("IsSelected");
binding.Source = ans;
checkBox.SetBinding(CheckBox.IsCheckedProperty, binding);

binding = new Binding("DisplayValue");
binding.Source = ans;
text.SetBinding(TextBlock.TextProperty, binding);

关于c# - 在代码隐藏中绑定(bind)动态创建的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589965/

相关文章:

javascript - 通过 Javascript 按 tab 键获取 selenium

mysql - 如何使用 mysql 即可编辑数据网格在 wpf 数据网格本身中插入更新删除

对象的 C# 扩展方法

c# - ARCore – 如何在 C# 中将 YUV 相机帧转换为 RGB 帧?

wpf - WPF TabControl-防止在选项卡更改时卸载?

javascript - polymer 纸标签选择未按预期工作

JavaFx 8 双向绑定(bind)

c# - 如何模拟 ShareDirectoryClient GetFilesAndDirectoriesAsync xUnit

c# - WPF 应用程序中使用了哪些线程?