【问题标题】:Clickable text within a DataGridDataGrid 中的可点击文本
【发布时间】:2014-07-25 20:36:00
【问题描述】:

我正在尝试创建一个包含“可点击”文本的 DataGrid。在我提供的示例中,我想点击BidAsk 价格并触发处理程序。我想这就像拥有一个触发功能而不是浏览器的超链接。该处理程序将用于使用位于所选BidAsk 行中的数据填充列表。我不知道如何处理这个问题,任何建议都将不胜感激。

我现在拥有的:

XAML

 <UserControl.Resources>
     <local:Options x:Key="Options"/>
 </UserControl.Resources>

 <DataGrid AutoGenerateColumns="True"
              Grid.Row="0"
              Grid.Column="1"
              RowHeaderWidth="0"
              AlternationCount="2"
              x:Name="AGrid"
              ItemsSource="{StaticResource Options}"
              CanUserAddRows="False"
              ColumnWidth="*"
              IsReadOnly="True">
 </DataGrid>

C#

public class Option
{
    public int Strike { get; set; }
    public int Bid { get; set; }
    public int Ask { get; set; }

    public Option()
    {
    }
}

public class Options : List<Option>
{
    public Options()
    {

        this.Add(new Option() { Strike = 120, Bid = 20, Ask = 25 });
        this.Add(new Option() { Strike = 130, Bid = 30, Ask = 35 });
        this.Add(new Option() { Strike = 140, Bid = 40, Ask = 45 });           
    }
}  
}

【问题讨论】:

标签: c# wpf xaml datagrid


【解决方案1】:

如果您只想要列标题的按钮,您应该使用 columnheaderstyle 并将模板设置为按钮,否则您可以使用 celltemplate。

以下代码应该可以按照您的要求工作。我只为列标题实现了它。

 <DataGrid ItemsSource="{Binding DataGridData}">
        <DataGrid.ColumnHeaderStyle>
            <Style TargetType="DataGridColumnHeader">
                <Style.Setters>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <Button Content="{Binding}">
                                    <Button.Style>
                                        <Style      TargetType="Button">
                                            <Setter  Property="Template">
                                                <Setter.Value>
                                                    <ControlTemplate  TargetType="Button">
                                                        <TextBlock  TextDecorations="Underline" FontWeight="Bold">
                        <ContentPresenter  />
                                                        </TextBlock>
                                                    </ControlTemplate>
                                                </Setter.Value>
                                            </Setter>
                                        </Style>
                                    </Button.Style>
                                </Button>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style.Setters>
            </Style>
        </DataGrid.ColumnHeaderStyle>
    </DataGrid>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    相关资源
    最近更新 更多