我正在尝试将对象列表绑定(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/