一、DataGrid簡(jiǎn)單使用
DataGrid的使用其實(shí)跟TreeView類似,只不過(guò)后臺(tái)組織的對(duì)象結(jié)構(gòu)不同,DataGrid一般不需要遞歸結(jié)構(gòu),它綁定的數(shù)據(jù)源,一個(gè)屬性就代表一個(gè)一列,理解不了沒(méi)事,我直接上代碼。
定義了一個(gè)關(guān)于水果的對(duì)象(這次偷懶了,想著簡(jiǎn)單介紹下,就沒(méi)按正規(guī)創(chuàng)建工程的方式來(lái)了)
private string name;
/// <summary>
/// 名字
/// </summary>
public string Name
{
get => name;
set
{
name = value;
OnPropertyChanged();
}
}
private int number;
/// <summary>
/// 數(shù)量
/// </summary>
public int Number
{
get => number;
set
{
number = value;
OnPropertyChanged();
}
}
private double price;
/// <summary>
/// 價(jià)格
/// </summary>
public double Price
{
get => price;
set
{
price = value;
OnPropertyChanged();
}
}
?三個(gè)屬性,對(duì)應(yīng)三列,老規(guī)矩,寫(xiě)界面和ViewModel(代碼很簡(jiǎn)單,自己寫(xiě)咯)
?
public ObservableCollection<DataGridModel> DataGridModels { get; set; } = new ObservableCollection<DataGridModel>();
public DataGridViewModel()
{
Create();
}
private void Create()
{
DataGridModels.Add(new DataGridModel()
{
Name = "蘋(píng)果",
Number = 5,
Price = 1.5
});
DataGridModels.Add(new DataGridModel()
{
Name = "香蕉",
Number = 2,
Price = 15
});
DataGridModels.Add(new DataGridModel()
{
Name = "菠蘿",
Number = 3,
Price = 10
});
}
寫(xiě)好直接運(yùn)行,看看效果
一個(gè)對(duì)象,對(duì)應(yīng)一行,一個(gè)屬性,對(duì)應(yīng)一列,跟TreeView每一級(jí)對(duì)應(yīng)一個(gè)對(duì)象類似的,默認(rèn)的樣式有點(diǎn)。。。所以,接下來(lái)咱們美化它。
先美化列名成中文 ——>名稱、數(shù)量、價(jià)格(DataGrid下有個(gè)Columns是包含所有的列,改列的樣式一般也在這里面)
?
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="名稱" />
<DataGridTextColumn Binding="{Binding Number}" Header="數(shù)量" />
<DataGridTextColumn Binding="{Binding Price}" Header="價(jià)格" />
</DataGrid.Columns>
運(yùn)行,
嘶,怎么顯示兩次了。。。?(小問(wèn)題)看官網(wǎng)發(fā)現(xiàn)DataGrids默認(rèn)自動(dòng)創(chuàng)建列的,這也就是我們一開(kāi)始只綁定數(shù)據(jù)源就顯示列的原因,AutoGenerateColumns="False",把這屬性設(shè)置為False就行了。
接著創(chuàng)建其他的列類型(checkbox、combobox、hyperlink)
?(如果這是一直對(duì)最后一行進(jìn)行雙擊后,再切換到其他行,會(huì)增加一行),直接設(shè)置CanUserAddRows="False",讓它不能創(chuàng)建行。
?OK,接下來(lái)設(shè)置隔行變色:AlternatingRowBackground="LightBlue"(設(shè)置目標(biāo)行的顏色),AlternationCount="2"(設(shè)置變色行間隔,最小值為2)
?最后是對(duì)行和單元格的樣式設(shè)置
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="SkyBlue" />
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
運(yùn)行結(jié)果如圖所示?
?結(jié)束
? ? ? ? 這次這個(gè)是非常簡(jiǎn)單的介紹,對(duì)應(yīng)DataGrid中的DataGridTemplateColumn(非常強(qiáng)大)的運(yùn)用,后面我是打算用個(gè)場(chǎng)景來(lái)展示DataGrid的應(yīng)用,這篇文章就算是入門篇吧
? ? ? ? 當(dāng)然,歡迎各位批評(píng)指正,謝謝啦文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-441404.html
附贈(zèng)
????????這是我的demo源碼:https://github.com/TQtong/DataGridDemo.git文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-441404.html
到了這里,關(guān)于新手入門WPF之DataGrid控件(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!