我想使用组合框隐藏和取消隐藏一些标签和文本框。使用数据源从数据库填充文本框。我已经尝试了代码,但应用程序没有给出任何响应。
代码:
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>
答案 0 :(得分:1)
我认为SelectedValue
不是字符串,因此比较始终为false
。请尝试以下方法:
if (_cmbRole.SelectedValue.ToString() == "3")
更好的方法是将SelectedValue
与正确类型的值进行比较。例如,如果它是整数,则应将其与3
进行比较。
但您也可以比较SelectedIndex
和SelectedItem
属性。可能是更好的选择。
答案 1 :(得分:0)
看起来您正在比较错误的数据类型。您绑定到角色ID,最有可能是整数,并且在您编写== "3"
时将其与字符串进行比较
如果是整数,那么你应该写
if (_cmbRole.SelectedValue == 3)
{
//true block here
}