【发布时间】:2017-08-23 05:53:14
【问题描述】:
我正在将 DataTable 绑定到 Datagrid。数据表中的列数和行数在运行时确定。但数据网格中显示的行数固定为 36。
因此,如果有时数据表有 ,则会显示空行以保持数据网格的高度。这样做的原因是我正在打印包含数据网格的网格,我不想弄乱打印模板的高度和宽度。
<DataGrid x:Name="TestPointsDataGrid" ItemsSource="{Binding TestPointsTable,Mode=TwoWay}" HorizontalScrollBarVisibility="Disabled"
CanUserResizeColumns="False" CanUserResizeRows="False" MouseRightButtonUp="DataGrid_MouseRightButtonUp"
CanUserAddRows="False" >
为了禁用我在样式触发器下面所做的第一列和最后一列:
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Aqua"></Setter>
</Trigger>
<DataTrigger Value="Type" Binding="{Binding Path=Column.Header, RelativeSource={RelativeSource Self}}">
<Setter Property="IsEnabled" Value="false" />
<Setter Property="FontWeight" Value="DemiBold"/>
</DataTrigger>
<DataTrigger Value="B or A" Binding="{Binding Path=Column.Header, RelativeSource={RelativeSource Self}}">
<Setter Property="IsEnabled" Value="false" />
<Setter Property="FontWeight" Value="DemiBold"/>
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
如上图所示,列数未知。
在我的情况下,第一列和最后一列始终是固定的。即分别为"Type" 和"B or A"。我能够为这些列设置IsEnabled = false。
如果第一列中有内容,则让用户编辑除第一列和最后一列之外的该行。
如何将那些空行的 IsEnabled 属性设置为 false ?或者只是任何解决方法来阻止用户在这些行中输入任何内容,除了不显示这些行。
【问题讨论】: