DataGrid中的可单击文本

时间:2014-06-05 01:31:45

标签: c# wpf xaml datagrid

我正在尝试创建一个具有"可点击的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 });           
    }
}  
}

1 个答案:

答案 0 :(得分:0)

如果只想要列标题按钮,则应使用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>