gpt4 book ai didi

wpf - 如何通过单击按钮展开 Datagrid 详细信息部分?

转载 作者:行者123 更新时间:2023-12-04 14:32:09 24 4
gpt4 key购买 nike

我正在尝试实现一个像文件夹树一样工作的数据网格(即每一行代表一个文件夹,详细信息 View 是另一个显示文件夹中文件的数据网格)。为了简单起见,我尝试精简我的代码,因此可能会出现错误,但这是我的基本 XAML 布局:

<my:DataGrid Name="dataGrid1" AutoGenerateColumns="False" ItemsSource="{Binding}">
<my:DataGrid.RowDetailsTemplate>
<DataTemplate>
<my:DataGrid ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type my:DataGrid}}, Path=SelectedItem.Files}" AutoGenerateColumns="False" HeadersVisibility="None">
<my:DataGrid.Columns>
<my:DataGridTextColumn Binding="{Binding Path=FileName}" />
<my:DataGridTextColumn Binding="{Binding Path=FSize}" />
</my:DataGrid.Columns>
</my:DataGrid>
</DataTemplate>
</my:DataGrid.RowDetailsTemplate>
<my:DataGrid.Columns>
<my:DataGridTemplateColumn CanUserResize="False" CanUserSort="False" Width="16">
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Click="Button_Click_1">
<Image Source="resources/+.ico" />
</Button>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
<my:DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
</my:DataGrid.Columns>
</my:DataGrid>

我正在尝试让按钮展开详细信息行,但我不确定如何引用该行:

    private void Button_Click_1(object sender, RoutedEventArgs e)
{
// how do I reference a row here?
DataGridRow row = ?
// so I can do this:
if (row.DetailsVisibility == Visibility.Collapsed)
row.DetailsVisibility = Visibility.Visible;
else
row.DetailsVisibility = Visibility.Collapsed;
}

希望问题很清楚...谢谢。

最佳答案

    private void Button_Click_1(object sender, RoutedEventArgs e)
{
DependencyObject obj = (DependencyObject)e.OriginalSource;
while (!(obj is DataGridRow) && obj != null)
obj = VisualTreeHelper.GetParent(obj);

if(obj is DataGridRow)
(obj as DataGridRow).DetailsVisibility = Visibility.Visible;
}

……等等

关于wpf - 如何通过单击按钮展开 Datagrid 详细信息部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/742612/

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