边界可见性绑定/隐藏在WPF中



我有一个围绕元素的边界,该元素的可见性与该元素绑定,如下所示:

    <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控件也会被永久隐藏(将其可见性设置为可见并不能取消此操作)。我很确定这是因为它被困在循环中。因此,我认为我应该设置边界的border属性,而不是设置可见性,但我不知道如何在不创建新转换器的情况下将边界绑定到控件MinPart的可见性。换句话说,我如何重载BooleanToVisibilityConverter,以便它能够检测到正在发送可见性的对象?

当控件嵌套时,这意味着如果使父控件不可见,则子控件将不可见。

试着把你的儿童控制装置拔出来,把它放在边界定义以下:

    <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" />

最新更新