c# - 如何在 ListView 的 GridViewColumn 中获得可点击的超链接列表?

标签 c# .net wpf xaml hyperlink

我正在尝试将对象列表绑定(bind)到以逗号分隔且可点击的 HyperLinks 列表。

如果每个单元只有一个,我可以做到,但我不知道如何为每个单元绑定(bind)一个集合。

单个 GridViewColumn 单元格中的类似内容:

Effect01, Effect02, Effect02, Shader01. Shader02

点击它们中的任何一个将调用绑定(bind)对象的 Execute 方法。

每个元素是:

public class EffectLink : IExecutable
{
    public string Name {get; set;}
    public void Execute ();
}

IExecutable 强制执行。

我这样做是因为 Execute 的行为将取决于它是着色器、效果等。

有什么想法吗?

编辑:

我发现我可以这样做:

<TextBlock>
    <Hyperlink>Effect01</Hyperlink>
    <Hyperlink>Effect02</Hyperlink>
</TextBlock>

所以这在单个单元格中显示了 2 个空格分隔的超链接。

这个问题也可能是相关的,但它显示了如何在代码中执行此操作,而不是在 xaml 中: Nested TextBlocks and Hyperlinks, How do you replicate this XAML in C#?

最佳答案

ItemsControl 放入您的 GridViewColumn.CellTemplate

    <GridViewColumn >
        <GridViewColumn.CellTemplate>
            <DataTemplate>
                <ItemsControl ItemsSource="{Binding}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <StackPanel Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>

                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <TextBlock x:Name="commaTextBlock" Text=", " />
                                <TextBlock><Hyperlink><Run Text="{Binding Path=Name}" /></Hyperlink></TextBlock>
                            </StackPanel>

                            <DataTemplate.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource PreviousData}}" Value="{x:Null}">
                                    <Setter Property="Visibility" TargetName="commaTextBlock" Value="Collapsed"/>
                                </DataTrigger>
                            </DataTemplate.Triggers>
                        </DataTemplate>

                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </DataTemplate>
        </GridViewColumn.CellTemplate>
    </GridViewColumn>

关于c# - 如何在 ListView 的 GridViewColumn 中获得可点击的超链接列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5426586/

相关文章:

C#/WPF : Get Binding Path of an Element in a DataTemplate

c# - .NET 中用于故障测试的损坏数据集

c# - 简单的 LINQ 重构/样式

asp.net - 如何在asp.net中使用公共(public)变量?

WPF ListView 数据绑定(bind)未绑定(bind)!

c# - 在 Silverlight 中链接 VisualStates

c# - 如何在vscode中调试cake项目?

c# - 在 LINQ to SQL 中使用 contains()

c# - 如何防止氧图在一个轴上缩放?

c# - 我想在将图像插入 db c# 时删除进程内存