在WPF窗口中使用组合框隐藏/取消隐藏控件

时间:2015-04-26 21:05:03

标签: c# wpf xaml combobox

我想使用组合框隐藏和取消隐藏一些标签和文本框。使用数据源从数据库填充文本框。我已经尝试了代码,但应用程序没有给出任何响应。

代码:

private void _cmbRole_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (_cmbRole.SelectedValue == "3")
            {
                _txtPmdc.Visibility = Visibility.Visible;
                _lblAffiliation.Visibility = Visibility.Visible;
                _lblPmdb.Visibility = Visibility.Visible;
            }

            else
            {
                _txtPmdc.Visibility = Visibility.Hidden;
                _lblAffiliation.Visibility = Visibility.Hidden;
                _lblPmdb.Visibility = Visibility.Hidden;
            }
        }

XAML:

<ComboBox x:Name="_cmbRole" Grid.Column="2" DisplayMemberPath="type" ItemsSource="{Binding}" Margin="10,14,52,10" Grid.Row="1" SelectedValuePath="role_id" FontSize="14" SelectionChanged="_cmbRole_SelectionChanged">
                        <ComboBox.ItemsPanel>
                            <ItemsPanelTemplate>
                                <VirtualizingStackPanel/>
                            </ItemsPanelTemplate>
                        </ComboBox.ItemsPanel>
                    </ComboBox>

2 个答案:

答案 0 :(得分:1)

我认为SelectedValue不是字符串,因此比较始终为false。请尝试以下方法:

if (_cmbRole.SelectedValue.ToString() == "3")

更好的方法是将SelectedValue与正确类型的值进行比较。例如,如果它是整数,则应将其与3进行比较。

但您也可以比较SelectedIndexSelectedItem属性。可能是更好的选择。

答案 1 :(得分:0)

看起来您正在比较错误的数据类型。您绑定到角色ID,最有可能是整数,并且在您编写== "3"时将其与字符串进行比较

如果是整数,那么你应该写

if (_cmbRole.SelectedValue == 3)
{
    //true block here
}