我已经有了一种表单,可以从数据集中获取数据行以绑定其所有元素。其中之一是一个布尔,但我希望这个布尔是由一个是/否组合框表示。所以我做了this,效果很好。将绑定可见性转换为是/否组合框与转换器
我也想绑定几个元素的可见性到这个布尔字段。当表单加载时,可见性的初始设置起作用。当我更改组合框选择时,组合框的ConvertBack()方法被调用(即设置绑定值)。但是其他可见性绑定到同一领域的元素不会被更新。我在转换方法中设置了断点,并且它们永远不会像调用窗体时那样调用。
以下是有关XAML:
<ComboBox SelectedIndex="{Binding Path=[Adequate], Converter={StaticResource b2iConverter}}" Name="cb_Adequate" >
<ComboBoxItem>Yes</ComboBoxItem>
<ComboBoxItem>No</ComboBoxItem>
</ComboBox>
<Label Content="Reason:"
VerticalAlignment="Center"
Visibility="{Binding Path=[Adequate],
Converter={StaticResource b2vConverterInverse}}"/>
<TextBox Text="{Binding Path=[NotAdequateReason]}"
Visibility="{Binding Path=[Adequate],
Converter={StaticResource b2vConverterInverse}}"/>
- “足够” 是布尔场
- b2iConverter只是booleanToIndexConverter(从上面的链接)
- b2vConverterInverse仅仅是一个倒置的布尔能见度转换器(我希望当Adequate为FALSE或0时显示标签和文本框)。
感谢您的帮助。我可以发布更多的代码,如果需要的话,我想这个问题是在XAML ...
编辑:显然这是不可能的XAML(见下Greg的职位),所以我只是做代码:
private void cb_Adequate_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Visibility vis = (cb_Adequate.SelectedItem as ComboBoxItem).Content.ToString() == "Yes" ? Visibility.Collapsed : Visibility.Visible;
label_Reason.Visibility = tb_AdequateDesc.Visibility = vis;
}
您是否尝试过明确设置绑定模式?你也可以尝试去除'Path'的方括号'[]',我不认为这是必要的。 – WildCrustacean