WPF DataGrid 子行內容


WPF的DataGrid真的很強大,可以顯示子行內容,里面可以是任意控件,這里我做了個一個簡單的DataGrid,雙擊某一行,打開里面的TextBox,並顯示綁定內容,廢話不說,直接代碼

界面:

<Window x:Class="WpfApplication1.Window21"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window21" Height="300" Width="300">
<Grid>

<DataGrid Name="dataGrid1" ItemsSource="{Binding}">
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<TextBlock Name="innerGrid"></TextBlock>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
</Grid>
</Window>

 

后台代碼:

/// <summary>
/// Window21.xaml 的交互邏輯
/// </summary>
public partial class Window21 : Window
{
DataTable dt = new DataTable();
public Window21()
{
InitializeComponent();

dt.Columns.Add("id", typeof(string));
dt.Columns.Add("標題", typeof(string));
dt.Columns.Add("內容", typeof(string));
dt.Columns.Add("iscp", typeof(bool));

dt.Rows.Add("1", "情歌", "情歌是簡述一個美好的愛情故事", false);
dt.Rows.Add("2", "What Are Words", "講述一個不離不棄的愛情故事", false);
this.dataGrid1.DataContext = dt;
this.dataGrid1.IsReadOnly = true;
this.dataGrid1.MouseDoubleClick += new MouseButtonEventHandler(dataGrid1_MouseDoubleClick);

this.dataGrid1.RowDetailsVisibilityChanged += new EventHandler<DataGridRowDetailsEventArgs>(dataGrid1_RowDetailsVisibilityChanged);
}

void dataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{


DataGridRow row = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(this.dataGrid1.SelectedIndex);

DataRowView rowview = this.dataGrid1.SelectedItem as DataRowView;
if (Convert.ToBoolean(rowview["iscp"]) == false)
{
rowview["iscp"] = true;
row.DetailsVisibility = System.Windows.Visibility.Visible;
}
else
{
rowview["iscp"] = false;
row.DetailsVisibility = System.Windows.Visibility.Collapsed;
}
}

void dataGrid1_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e)
{
DataGridRow row = e.Row;
TextBlock inne = e.DetailsElement as TextBlock;
System.Data.DataRowView rowview = row.Item as System.Data.DataRowView;

if (Convert.ToBoolean(rowview["iscp"]))
{
row.DetailsVisibility = System.Windows.Visibility.Visible;
string value = rowview["內容"].ToString();
inne.Height = 100;
inne.Text = value;
}
else
{
row.DetailsVisibility = System.Windows.Visibility.Collapsed;
}
}
}
}

 

代碼比較簡單,我就不說明了,看不懂的再留言問我吧.

這東西看簡單,其實真的還是用了很多自己的時間,轉載的童鞋,記得保留我的連接http://www.cnblogs.com/linyijia/archive/2013/03/15/2961102.html,不做純粹的伸手黨哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM