Как сделать ресурс XAML повторно используемым в элементах управления? - PullRequest
0 голосов
/ 11 октября 2018

В настоящее время у меня есть следующий код:

<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>

1 Ответ

0 голосов
/ 11 октября 2018

К столбцам нельзя получить доступ через ресурсы, см. Столбцы таблицы данных WPF в стиле или ресурсе

Что вы можете сделать, это иметь шаблоны для 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...