我旁边有一个组合框和一个浏览按钮。组合框显示所有本地SQL实例,浏览按钮显示包含所有远程SQL实例的上下文菜单。我完成了所有这些。现在我需要从上下文菜单中选择一个项目,然后将其作为选择项目显示在组合框中。
我认为这里至少涉及两个事件:上下文菜单中的MouseDown事件,用于从组合框中选择和选择更改事件。而这两个事件是彼此相邻的。我怎样才能实现它。如何让一个事件触发另一个事件?我尝试了一些代码,但它不起作用:
<ComboBox Name ="comboSql"
Height="22"
Margin="10,0,20,0"
Width="250"
IsEditable="True"
Text="{Binding SelectedSqlServer, Mode=TwoWay}"
ItemsSource="{Binding LocalSqlServers}">
</ComboBox>
<Button x:Name="BrowseButton"
FontWeight="Bold"
Width="80"
Height="22"
Content="Browse"
Click="BrowseButton_Click">
<Button.ContextMenu>
<ContextMenu Name="BrowseButtonContext"
ItemsSource="{Binding RemoteSqlServers}"
MouseDown="Select_Click">
</ContextMenu>
</Button.ContextMenu>
</Button>
public string SelectedSqlServer
{
get { return selectedSqlServer.ToString(); }
}
public void Select_Click(object sender, RoutedEventArgs e)
{
selectedSqlServer = (System.Windows.Controls.ContextMenu)sender;
comboSql.Text = selectedSqlServer.ToString();
}
答案 0 :(得分:1)
以下是如何完成此操作的示例代码:
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel>
<ComboBox x:Name="cb1" Width="100" Height="40">
</ComboBox>
<Button x:Name="button1" Width="100" Height="40" Content="Browse">
<Button.ContextMenu>
<ContextMenu x:Name="context1">
</ContextMenu>
</Button.ContextMenu>
</Button>
</StackPanel>
</Grid>
代码隐藏:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
SetUpContextMenu();
SetUpComboBox();
}
private void SetUpComboBox()
{
cb1.Items.Add("Sql1");
cb1.Items.Add("Sql2");
cb1.Items.Add("Sql3");
}
private void SetUpContextMenu()
{
MenuItem item1 = new MenuItem();
item1.Header = "Remote1";
item1.Click += AddToComboBox;
item1.CommandParameter = "Remote1";
MenuItem item2 = new MenuItem();
item2.Header = "Remote2";
item2.Click += AddToComboBox;
item2.CommandParameter = "Remote2";
MenuItem item3 = new MenuItem();
item3.Header = "Remote3";
item3.Click += AddToComboBox;
item3.CommandParameter = "Remote3";
context1.Items.Add(item1);
context1.Items.Add(item2);
context1.Items.Add(item3);
}
public void AddToComboBox(object sender, RoutedEventArgs e)
{
MenuItem item = (MenuItem)sender;
int index = cb1.Items.Add(item.CommandParameter);
cb1.SelectedIndex = index;
}
}
我将contextmenustrip项的“Text”添加到组合框中。确保您有一种方法可以引用您的实际SQL实例/连接字符串/无论您使用什么。