我正在尝试使用ViewModel中的IsVisible属性来控制DataGridTemplateColumn的可见性。 这是xaml代码
<DataGrid>
<DataGrid.Resources>
<local:BindingProxy x:Key="proxy" Data="{Binding}"/>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTemplateColumn Width="32" IsReadOnly="True"
Visibility="{Binding Path=Data.IsVisible,TargetNullValue=True,Source={StaticResource Proxy},Converter={StaticResource BoolToVisibilityConverter}}" CellTemplate="{StaticResource RemoveButtonTemplate}">
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
这是我的绑定代理
public class BindingProxy : Freezable
{
#region Overrides of Freezable
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
}
#endregion
public object Data
{
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data", typeof(object),
typeof(BindingProxy));
}
这是Viewmodel属性
public bool IsVisible
{
get { return true; }
}
每次第一次加载网格时,DataGridTemplateColumn总是被隐藏。如果我做错了,请建议。
奇怪的是,如果我在xaml中使用FrozenColumnCount,它会完美运行。