组合框第一项在 WPF c# 中保持为空

Combo Box 1st item is remained empty in WPF c#

我的 wpf 中有一个组合框和 2 个项目:

  1. 发送
  2. 收到。

我想让组合框在第一次加载 WPF 时显示一般消息(send/receive)。 我尝试将字符串应用于 XAML 中的文本 属性,但没有成功:

<ComboBox x:Name="opBox" HorizontalAlignment="Left" Text="Send/Receive"/> 

有没有什么方法可以应用此文本,使其不再作为项目?

此外,当其中一项被选中时,我将通过名为 SelectionChanged 的​​事件隐藏或显示相应的按钮。但是如果用户再次选择一般消息 send/receive 我希望 2 个按钮一起隐藏。当我尝试在 SelectionChanged 中这样做时,我遇到了一些错误。

更新: 这是我的 SelectionChanged 事件:

private void opBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        if (opBox.SelectedIndex == 1)//Send
        {

            mySendButton.Visibility = Visibility.Visible;
            myReceiveButton.Visibility = Visibility.Hidden;
        }
        else if(opBox.SelectedIndex==2)//Receive
        {

            mySendButton.Visibility = Visibility.Hidden;
            myReceiveButton.Visibility = Visibility.Visible;
            ClearTextBox();
        }
        else if (opBox.SelectedIndex == 0)//Send or Receive
        {

                mySendButton.Visibility = Visibility.Hidden;
                myReceiveButton.Visibility = Visibility.Hidden;

        } 

尝试设置 IsEditableIsReadonly 属性,如下所示:

<ComboBox x:Name="opBox" IsEditable="True" IsReadOnly="True" HorizontalAlignment="Left" Text="Send/Receive"/>

要阻止您的代码在 InitializeComponent() 上崩溃,请在 opBox_SelectionChanged

之上添加以下代码
if (mySendButton==null||myReceiveButton==null)
    return;

另请注意,直接从事件处理程序管理控件属性不是 WPF 方式。最好使用数据绑定和基于视图模型的方法来自定义 WPF UI 行为。