设置Listview列元素可见性

时间:2011-06-17 14:01:01

标签: c# wpf mvvm

所以我的问题是。我有一个包含各种行的列表视图。在一行中我有一个Button来对该行中的数据执行某个过程。 事情是这个按钮不应该是可见的,具体取决于同一行中的数据。 即。行数据可能类似于:

姓名,年龄,地址,身份证号码,已应用,(按钮)

在这种情况下,如果应用的bool值为true,则不应出现该按钮。 我已经尝试使用布尔到可见性转换器,但我似乎无法让它工作。

任何想法都将不胜感激。

欢呼声

2 个答案:

答案 0 :(得分:1)

BooleanToVisibilityConverter将true转换为可见,你想要的是相反的:

[ValueConversion(typeof(bool), typeof(Visibility))]
public class BoolToOppositeVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var boolValue = value as bool?;

        return boolValue.HasValue && boolValue.Value
            ? Visibility.Collapsed
            : Visibility.Visible;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

答案 1 :(得分:1)

另一个选择是使用ViewModel并在像IsApplyEnabled这样的属性中进行转换。如果是假则隐藏按钮。或者,您可以使用CanExecute覆盖将按钮绑定到RelayCommand。这会自动禁用该按钮。您还可以覆盖模板,以便在禁用时隐藏Button。许多方法给猫皮肤。