c# - 绑定(bind)边界可见性/隐藏在 WPF 中

标签 c# wpf xaml

我有一个围绕元素的边框,该元素的可见性绑定(bind)到该元素,如下所示:

    <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 属性而不是设置可见性,但我不知道如何将边框绑定(bind)到可见性在不创建新转换器的情况下控制 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" />

关于c# - 绑定(bind)边界可见性/隐藏在 WPF 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36991311/

相关文章:

c# - C# 中的下拉列表

c# - 使用 lambda 作为方法的 Delegate.CreateDelegate 产生 "method argument length mismatch"异常

c# - 从值转换器访问资源字典中的颜色

c# - 在 Xamarin Forms 中的页面之间共享单个 ViewModel 实例

c# - 如何编写求最大和最小分数的程序?

c# - 哪个控件可以构建一个十六进制编辑器?

c# - 通过 M-V-MV 设计模式绑定(bind) MouseDoubleClick 的问题

XAML 中的 WPF 合并上下文菜单

c# - 为什么我的 XAML 控件没有显示在代码隐藏中?

c# - 托管 WinRT 组件 + 虚拟方法