【发布时间】:2016-08-27 17:48:14
【问题描述】:
我有一个围绕其可见性绑定到该元素的元素的边框,如下所示:
<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 以便它可以检测到正在向它发送可见性的对象?
【问题讨论】:
-
如何设置 MiniPart 可见性?这是从某处的代码手动完成的吗?
-
在后面的代码中设置。它取决于用户设置的其他变量。
-
为什么不将它们都绑定到 IsVisible 并设置它,而不是直接设置 MiniPart 可见性?