我使用这个例子来解决一个更大的问题,但由于我是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文件中创建了一个类,并为每个组合框选择了一个新的扩展器实例。基于我非常简单的任务,我发现了一些让我无法理解的例子。我查看的示例包括here,here和here
我并不是说这些例子很糟糕,只是根据我的经验水平,我无法让他们中的任何一个工作。任何帮助表示赞赏。
答案 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是面板的名称
希望这有帮助。