我有一个包围一个元素的边框,其可见性与该元素绑定,代码如下:
<Border Grid.Column="1" Grid.Row="1" BorderBrush="White" BorderThickness="1" Height="27" Width="112"
Visibility="{Binding IsVisible, ElementName=MinPart, Converter={StaticResource BoolToVisConv}}">
<wpfTool:DecimalUpDown x:Name="MinPart" Value="1.0" FontSize="13" />
</Border>
BoolToVisConv转换器的背后代码是:
public class BooleanToVisibilityConverter : IValueConverter
{
private object GetVisibility(object value)
{
if (!(value is bool))
return Visibility.Hidden;
bool objValue = (bool)value;
if (objValue)
{
return Visibility.Visible;
}
else
{
return Visibility.Hidden;
}
}
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return GetVisibility(value);
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
我正在尝试使MinPart可见时,边框也变为可见。目前,即使边框只有一次被隐藏,MinPart控件也会永久隐藏(将其可见性设置为可见并不能撤销这种情况)。我相信这是因为它被困在循环中。因此,我认为应该设置边框的属性而不是设置可见性,但我不知道如何将边框绑定到MinPart控件的可见性上,而不创建新的转换器。换句话说,如何重载BooleanToVisibilityConverter以便它可以检测发送给它的对象的可见性?