Silverlight DataGridTextColumn Binding Visibility

2019-01-20 09:27发布

Following my earlier post I am now trying now to bind the visibility of DataGridColumns to a VM notification property. MSDN suggests I should be able to do this with ease.

I already have a value convertor and VM notification property that I know works (I have tested these on another element on my page:

<CheckBox x:Name="chkAllTeams" Visibility="{Binding Converter={StaticResource BoolToVisibilityConverter}, Path=AllTeams}"/>

This checkbox control visibility reacts as I would expect. When I set the same binding on the DataTextColumn I get an AG_E_BAD_PARSER error on the Visibility= line of XAML:

<data:DataGridTextColumn 
Visibility="{Binding Converter={StaticResource BoolToVisibilityConverter}, Path=AllTeams}"
/>

Any ideas anyone? Thanks, Mark

4条回答
萌系小妹纸
2楼-- · 2019-01-20 09:42

I've added an answer to a similar question: Silverlight: How to bind DataGridColumn.Visibility?

查看更多
我想做一个坏孩纸
3楼-- · 2019-01-20 09:48

Visibility on the DataGridTextColumn is a different beast on the checkbox. Basically, it isn't a dependency property and can't be data-bound. If you need this functionality, you can subclass DataGridTextColumn and add your own dependency property to get the behavior.

  • Rectangle gets its Visibility property from UIElement and is a dependency property
  • DataGridTextColumn gets its Visibility from DataGridColumn and isn't a dependency property.
查看更多
何必那么认真
4楼-- · 2019-01-20 09:53

Did you set BoolToVisibilityConverter as a resource?

查看更多
我命由我不由天
5楼-- · 2019-01-20 10:01

You'll need to use a datatemplate:

<DataTemplate x:Key="cBDT">
<(UIELEMENT HERE) x:Name="chkAllTeams" Visibility="{Binding Converter={StaticResource BoolToVisibilityConverter}, Path=AllTeams}"/> </DataTemplate>

As was mentioned before, only UIElement has the "Visibility" dependency property.

To see an example of this in context:

http://blogs.msdn.com/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx

查看更多
登录 后发表回答