.net WPF中的动态页面?如何根据选定的值进行控制/

.net WPF中的动态页面?如何根据选定的值进行控制/,.net,wpf,.net,Wpf,我是WPF的新手。我试图创建一个在运行时创建的页面,该页面依赖于组合框选择。组合框选择有2,3,4,5,选择的数字将在下一页动态创建一组文本框 我应该使用带有绑定和触发器的内容模板、控制模板或数据模板,还是有其他方法来创建依赖于用户选择的动态文本框?嗯,我认为没有一种方法可以做到这一点 您可以在下一页上使用一些ItemsControl,并为其提供(至少一个)DataTemplate,用于设置TextBox或您希望在下一页上使用的其他内容 下面是一个示例,每当您单击按钮 XAML: 我是一个字符

我是WPF的新手。我试图创建一个在运行时创建的页面,该页面依赖于组合框选择。组合框选择有2,3,4,5,选择的数字将在下一页动态创建一组文本框


我应该使用带有绑定和触发器的内容模板、控制模板或数据模板,还是有其他方法来创建依赖于用户选择的动态文本框?

嗯,我认为没有一种方法可以做到这一点

您可以在下一页上使用一些
ItemsControl
,并为其提供(至少一个)
DataTemplate
,用于设置
TextBox
或您希望在下一页上使用的其他内容

下面是一个示例,每当您单击
按钮

XAML:


我是一个字符串值
我是一个不折不扣的人
代码隐藏:

using System.Windows;
using System.Windows.Data;
using System.Collections.ObjectModel;

namespace DynamicPage
{
    public partial class MainWindow : Window
    {
        public ObservableCollection<object> MyList = new ObservableCollection<object>();
        public MainWindow()
        {
            InitializeComponent();
            ((CollectionViewSource)this.Resources["VS"]).Source = MyList;
        }

        private void StringButton_Click(object sender, RoutedEventArgs e)
        {
            MyList.Add("Some Text");
        }
        private void BoolButton_Click(object sender, RoutedEventArgs e)
        {
            MyList.Add(false);
        }
    }
}
使用System.Windows;
使用System.Windows.Data;
使用System.Collections.ObjectModel;
命名空间动态页面
{
公共部分类主窗口:窗口
{
公共ObservableCollection MyList=新ObservableCollection();
公共主窗口()
{
初始化组件();
((CollectionViewSource)this.Resources[“VS”]).Source=MyList;
}
私有void StringButton_单击(对象发送方,路由目标)
{
添加(“一些文本”);
}
私有无效布尔按钮单击(对象发送器,路由目标e)
{
MyList.Add(false);
}
}
}
正如你所看到的,我只有一个对象集合,我添加布尔和字符串

datatemplate根据对象的类型进行选择(您可以在此处使用自己的类型,而不是原语)

因此,为了在另一个页面/窗口上创建控件,您可以设置视图模型集合,将其绑定到ItemsControl,并为每种类型创建一个DataTemplate,而不是使用代码隐藏自己创建每个控件

但这只是一种方法。。。不一定是这样

using System.Windows;
using System.Windows.Data;
using System.Collections.ObjectModel;

namespace DynamicPage
{
    public partial class MainWindow : Window
    {
        public ObservableCollection<object> MyList = new ObservableCollection<object>();
        public MainWindow()
        {
            InitializeComponent();
            ((CollectionViewSource)this.Resources["VS"]).Source = MyList;
        }

        private void StringButton_Click(object sender, RoutedEventArgs e)
        {
            MyList.Add("Some Text");
        }
        private void BoolButton_Click(object sender, RoutedEventArgs e)
        {
            MyList.Add(false);
        }
    }
}