组合框的第一项在WPF c#中仍然是空的

本文关键字:WPF 仍然是 一项 组合 | 更新日期: 2023-09-27 17:54:44

我的wpf中有一个combox和2个item,分别是:

我想使组合框在第一次加载WPF时显示一般消息(发送/接收)。我试图将字符串应用于XAML中的文本属性,但它不起作用:

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

有没有办法应用这个文本,使它不会作为一个项目?

此外,当其中一个项目被选中时,我通过一个名为SelectionChanged的事件隐藏或显示相应的按钮。但如果用户再次选择一般消息发送/接收,我希望这两个按钮隐藏在一起。当我尝试在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;
        } 

组合框的第一项在WPF c#中仍然是空的

尝试设置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行为。