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

标签 silverlight-3.0 datagrid nested

我正在使用 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/

相关文章:

c# - 没有代码隐藏的数据网格行详细信息

c# - 从数据行 View WPF 中获取数据网格行

javascript - 如何访问嵌套对象中的键

c# - 当应用程序在后台时显示消息框

silverlight - 在 Silverlight 中启用或禁用多个控件

data-binding - Silverlight DataForm 如何自动生成从 ComboBox 到枚举的绑定(bind)?

c# - 在 Silverlight 中重用自定义样式

c# - 在运行时将 DataTable 绑定(bind)到 WPF MVVM 中的 Datagrid

jQuery - 获取嵌套列表子项的路径

java - HQL 可完美运行嵌套 SQL