【发布时间】:2013-02-11 22:55:47
【问题描述】:
我想知道当有人单击单元格内的超链接或按钮时,如何防止在 DataGrid 中显示详细信息行。当您尝试单击超链接并显示详细信息而不是链接时,这真的很烦人。
另一个问题是我在一列中有一些操作按钮,所以当详细信息折叠时,您必须先单击行以显示详细信息,然后单击例如编辑按钮。
示例:
MainWindow.xaml.cs
namespace WpfApplication1
{
public class Item
{
public string Column0 { get; set; }
public string Mail { get; set; }
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
public ObservableCollection<Item> Items
{
get
{
ObservableCollection<Item> i = new ObservableCollection<Item>();
i.Add(new Item() { Column0 = "dsaads", Mail = "mail@sad.com" });
i.Add(new Item() { Column0 = "wdads", Mail = "adsdas@sad.com" });
return i;
}
}
public void HyperlinkClick(object sender, RoutedEventArgs e)
{
MessageBox.Show("Clicked");
}
}
}
MainWindow.xaml
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid RowDetailsVisibilityMode="VisibleWhenSelected" ItemsSource="{Binding Items}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Column0" Binding="{Binding Column0}" />
<DataGridHyperlinkColumn Header="Mail" Width="*" Binding="{Binding Mail}" >
<DataGridHyperlinkColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="Padding" Value="2,0,2,0" />
<EventSetter Event="Hyperlink.Click" Handler="HyperlinkClick" />
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<Grid Height="100">
</Grid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
</Window>
要查看问题:选择第一行,然后尝试单击第二行中的超链接。
【问题讨论】:
-
如果您需要更好的帮助,请更快;始终提供代码:)
-
没有必要在问题标题中添加“How to”或“datagrid”,因为“how to”是多余的,因为它已经在标签中.
-
朋友,你得到这个问题的答案的可能性很小。提供一些代码和你尝试过的一些东西。
-
好的,我会准备一些代码 :-),但我认为对于已经使用过 DataGrid 和详细信息行的人来说这个问题很简单 :-)。
-
我已经添加了一些代码。