在WPF中,根据组合框输入创建扩展器

时间:2015-02-16 04:50:27

标签: c# wpf user-interface visual-studio-2012 dynamic

我使用这个例子来解决一个更大的问题,但由于我是wpf和C#的新手,我必须从某个地方开始吗?好吧,我想要做的是创建一个基于组合框输入的新扩展器。我目前的代码非常简单。

MainWindow.xaml

<!-- MainWindow.xaml -->
<Grid>
    <StackPanel>
        <ComboBox IsEditable="True" IsReadOnly="True" Text="Default Text" HorizontalAlignment="Left" Width="260" Height="30">
            <ComboBoxItem PreviewMouseLeftButtonDown="method1" Name="method1>1</ComboBoxItem>
            <ComboBoxItem PreviewMouseLeftButtonDown="method2" Name="method1>2</ComboBoxItem>
            <ComboBoxItem PreviewMouseLeftButtonDown="method3" Name="method1>3</ComboBoxItem>
            <ComboBoxItem PreviewMouseLeftButtonDown="method4" Name="method1>4</ComboBoxItem>
        </ComboBox>
    </StackPanel>
</Grid>

MainWindow.xaml.cs

//MainWindow.xaml.cs
Public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
    private void method1(object sender, MouseEventArgs e)
    {
        MessageBox.Show("method1");
    }

    private void method2(object sender, MouseEventArgs e)
    {
        MessageBox.Show("method2");
    }

    private void method3(object sender, MouseEventArgs e)
    {
        MessageBox.Show("method3");
    }

    private void method4(object sender, MouseEventArgs e)
    {
        MessageBox.Show("method4");
    }
    //public class dynamicExpanderCreation
    //{
        //Here's where I'm assuming the class for dynamic creation should go.      
    //}

我希望让他们创建一个基于组合框选择而创建的扩展器,而不是每个人调用一个方法。例如,如果要选择3,则左侧会出现一个标记为3的扩展器。然后,如果选择1,则会在#3扩展器下方显示一个扩展器,标记为1.

我猜你在MainWindow.xaml.cs文件中创建了一个类,并为每个组合框选择了一个新的扩展器实例。基于我非常简单的任务,我发现了一些让我无法理解的例子。我查看的示例包括hereherehere

我并不是说这些例子很糟糕,只是根据我的经验水平,我无法让他们中的任何一个工作。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

  

在WPF中你需要放置任何面板   的StackPanel / wrappanel / DockPanel中/网格

<ComboBox Name="combobox" IsEditable="False" SelectionChanged="ComboBox_SelectionChanged" Text="Default Text" HorizontalAlignment="Left" Width="260" Height="30">
                <ComboBoxItem>1</ComboBoxItem>
                <ComboBoxItem>2</ComboBoxItem>
                <ComboBoxItem>3</ComboBoxItem>
                <ComboBoxItem>4</ComboBoxItem>
            </ComboBox>

            <StackPanel Name="dock">                   

            </StackPanel>
  

在Codebehind中

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var itemIndex = combobox.SelectedItem;
            Expander expander = new Expander();
            dock.Children.Add(expander);
        }
  

其中dock是面板的名称

希望这有帮助。