我目前有以下代码:
<DataGrid x:Name="dgAppRevision" Margin="0,50,0,0" AutoGenerateColumns="False" IsReadOnly="True"
HorizontalContentAlignment="Right" MouseDoubleClick="dgdc" RowStyle="{StaticResource appStyle}" Grid.Row="1">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Python">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image x:Name="checkImage" Width="30" Height="30" Source="pack://application:,,,/ProjectTracker;component/Icons/GreenCheck.png" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=python_done}" Value="False">
<Setter Property="Source" Value="pack://application:,,,/ProjectTracker;component/Icons/RedX.png" TargetName="checkImage"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="C#">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image x:Name="checkImage" Width="30" Height="30" Source="pack://application:,,,/ProjectTracker;component/Icons/GreenCheck.png" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=cs_done}" Value="False">
<Setter Property="Source" Value="pack://application:,,,/ProjectTracker;component/Icons/RedX.png" TargetName="checkImage"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid>
我的UserControl
当前大约有5个表,这些表具有不同的列,除了这两列之外,它们很难阅读且难以编辑。有什么办法可以使这些列可重用,以便我可以只用
<DataGrid>
<DataGrid.Columns>
</resusedCollumns>
<!-- Other Columns -->
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:1)
无法通过资源访问列,请参见WPF DataGrid Columns in Style or resource
您可以做的是在资源中提供DataGridTemplateColumn
的模板。
<DataTemplate x:Key="GreenCheckColumnTemplate">
<Image x:Name="checkImage" Width="30" Height="30"
Source="pack://application:,,,/ProjectTracker;component/Icons/GreenCheck.png" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=python_done}" Value="False">
<Setter Property="Source" Value="pack://application:,,,/ProjectTracker;component/Icons/RedX.png"
TargetName="checkImage"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
并使用:
进行访问<DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn Header="Python"
CellTemplate="{StaticResource GreenCheckColumnTemplate}" />
编辑
除非我完全错了。我正在浏览我当前的项目,发现我已经完成了,但是我说的无法完成。
<Window.Resources>
<DataGridTemplateColumn x:Key="GreenCheckColumn" Header="Python">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</Window.Resources>
<Grid>
<DataGrid>
<DataGrid.Columns>
<StaticResource ResourceKey="GreenCheckColumn" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>