通过IsVisibility控制Telerki GridViewDataColumn的可见性

时间:2013-12-20 05:47:44

标签: c# silverlight mvvm telerik-grid

我想动态显示/隐藏DataGridViewColumn,因此我在演示模型中创建了一个名为IsColumnVisible的bool属性,并将其应用于xaml中的Visibility=IsColumnVisible

也尝试了这个,

<conv:VisibilityToBoolConverter x:Key="VisibleIfTrue"
                                Inverted="True"
                                Not="False" />
<conv:VisibilityToBoolConverter x:Key="VisibleIfFalse"
                                Inverted="True"
                                Not="True" />
<telerik:GridViewDataColumn Width="100"
                            Header="Deadline Date"
                            DataFormatString="{}{0:MM/dd}"
                            DataMemberBinding="{Binding DEADLINE_DT}"
                            IsReadOnly="True"
                            TextAlignment="Center"
                            HeaderCellStyle="{StaticResource GridViewHeaderCellStyle}"
                            ShowFieldFilters="False"
                            IsVisible="{Binding Path=IsDeadlineDateVisible, Converter={StaticResource VisibleIfTrue}}" />

这是我的代码背后的属性(演示模型)

public bool IsDeadlineDateVisible
{
    get
    {
        return _IsDeadlineDateVisible;
    }
    set
    {
        _IsDeadlineDateVisible = value;
        OnPropertyChanged("IsDeadlineDateVisible");
    }
}

它不起作用(列始终可见)。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

您不需要VisibilityToBoolConverter,因为IsVisible的类型为bool,而您用于绑定“IsDeadlineDateVisible”的属性也是bool。 因此,您可以直接使用如下: IsVisible =“{Binding Path = IsDeadlineDateVisible}”,没有转换器。

如果要绑定的依赖项属性属于Visibility类型,则需要转换器,例如,对于Grid,依赖项属性Visibility不是bool。 要切换网格的可见性,您需要使用上面使用过的转换器。