XamDataGridのフィールドにリンクを表示させるには、CellValuePresenterのControlTemplateをオーバーライドし、Hyperlinkを配置してください。

オーバーライドしたStyleは、FieldのCellValuePresenterStyleプロパティで指定してください。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<Window.Resources>
<!-- CellValuePresenterのControlTemplateをオーバーライドする -->
<Style TargetType="{x:Type igDP:CellValuePresenter}" x:Key="LinkStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}">
<TextBlock>
<!-- Hyperlinkを配置する -->
<Hyperlink
RequestNavigate="Hyperlink_RequestNavigate"
NavigateUri="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}">
<ContentControl>
<TextBlock Text="{TemplateBinding Value}"/>
</ContentControl>
</Hyperlink>
</TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<!-- 中略 -->
<igDP:XamDataGrid>
<igDP:XamDataGrid.FieldLayouts>
<igDP:FieldLayout>
<igDP:FieldLayout.Fields>
<!-- FieldのCellValuePresenterStyleプロパティに、オーバライドしたStyleのインスタンスを指定する -->
<igDP:Field Name="Link" Label="Link" CellValuePresenterStyle="{StaticResource LinkStyle}"/>
</igDP:FieldLayout.Fields>
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
<Window.Resources> <!-- CellValuePresenterのControlTemplateをオーバーライドする --> <Style TargetType="{x:Type igDP:CellValuePresenter}" x:Key="LinkStyle"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> <TextBlock> <!-- Hyperlinkを配置する --> <Hyperlink RequestNavigate="Hyperlink_RequestNavigate" NavigateUri="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}"> <ContentControl> <TextBlock Text="{TemplateBinding Value}"/> </ContentControl> </Hyperlink> </TextBlock> </ControlTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> <!-- 中略 --> <igDP:XamDataGrid> <igDP:XamDataGrid.FieldLayouts> <igDP:FieldLayout> <igDP:FieldLayout.Fields> <!-- FieldのCellValuePresenterStyleプロパティに、オーバライドしたStyleのインスタンスを指定する --> <igDP:Field Name="Link" Label="Link" CellValuePresenterStyle="{StaticResource LinkStyle}"/> </igDP:FieldLayout.Fields> </igDP:FieldLayout> </igDP:XamDataGrid.FieldLayouts> </igDP:XamDataGrid>
<Window.Resources>
    <!-- CellValuePresenterのControlTemplateをオーバーライドする -->
    <Style TargetType="{x:Type igDP:CellValuePresenter}" x:Key="LinkStyle">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}">
                    <TextBlock>
                        <!-- Hyperlinkを配置する -->
                        <Hyperlink 
                            RequestNavigate="Hyperlink_RequestNavigate" 
                            NavigateUri="{Binding Path=Value, RelativeSource={RelativeSource TemplatedParent}}">
                            <ContentControl>
                                <TextBlock Text="{TemplateBinding Value}"/>
                            </ContentControl>
                        </Hyperlink>
                    </TextBlock>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<!-- 中略 -->

<igDP:XamDataGrid>
    <igDP:XamDataGrid.FieldLayouts>
        <igDP:FieldLayout>
            <igDP:FieldLayout.Fields>
                <!-- FieldのCellValuePresenterStyleプロパティに、オーバライドしたStyleのインスタンスを指定する -->
                <igDP:Field Name="Link" Label="Link" CellValuePresenterStyle="{StaticResource LinkStyle}"/>
            </igDP:FieldLayout.Fields>
        </igDP:FieldLayout>
    </igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>

 

実行結果

 

サンプル

 

リファレンス

 

 

Tagged:

製品について

Ultimate UI for WPF