gpt4 book ai didi

silverlight-3.0 - 嵌套 Silverlight Datagrid - 行详细信息效果很好,但我想要一个按钮!

转载 作者:行者123 更新时间:2023-12-04 17:42:11 27 4
gpt4 key购买 nike

我正在使用 Silverlight 3 数据网格,在其中,我使用 rowdetails (visibilitymode = visiblewhenselected) 将相关记录嵌套在另一个控件中。

我真的很喜欢它的工作原理,但我更愿意在按下“+”按钮时让网格显示行详细信息,就像单击节点时树会展开一样。

我尝试使用这样的资源以编程方式定义模板:

<Grid.Resources>
<DataTemplate x:Key="EmptyTemplate">
<StackPanel>
<!--<TextBlock Text="Empty Template!!!" />-->
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="SongTemplate">
<StackPanel>
<AdminControls:ArtistSongControl x:Name="ArtistSongControl" />
</Stack>
</DataTemplate>
</Grid.Resources>

在网格的 LoadingRowDetails 事件中,我会选择要设置的模板:
e.Row.DetailsTemplate = (DataTemplate)LayoutRoot.Resources["SongTemplate"];

这有点奏效,但我发现我在折叠前一行详细信息模板时遇到了问题,甚至崩溃了 ie8(不确定这是否相关)。

基本上,我真的很喜欢silverlight 3 数据网格的工作方式,甚至是如何实现rowdetailstemplate 的东西。我只是想推迟加载任何细节,直到有目的地扩展一行(就像一棵树一样)。所有 3rd 方网格似乎都这样做,而微软的则非常接近。有谁知道如何解决这个问题?

谢谢,丹尼斯

最佳答案

丹尼斯,

如果您还没有找到答案,我想要相同的行为并通过自定义 RowHeaderTemplate 来解决它,它允许您在每行的标题中抛出一个按钮。然后我为按钮实现了一个处理程序,如下所示:

private void ToggleButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
ToggleButton button = sender as ToggleButton;
DataGridRow row = button.GetVisualAncestorOfType<DataGridRow>();

if (button.IsChecked == true)
{
row.DetailsVisibility = Visibility.Visible;

//Hide any already expanded row. We only want one expanded at a time for simplicity and
//because it masks a virtualization bug in the datagrid.
if (_expandedRow != null)
_expandedRow.DetailsVisibility = Visibility.Collapsed;

_expandedRow = row;
}
else
{
row.DetailsVisibility = Visibility.Collapsed;
_expandedRow = null;
}
}

请注意,GetVisualAncestorOfType<> 是我实现的一个扩展方法,用于挖掘可视化树。

您还需要将数据网格的 HeadersVisibility 属性设置为 Row 或 All

关于silverlight-3.0 - 嵌套 Silverlight Datagrid - 行详细信息效果很好,但我想要一个按钮!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1242520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com