❶ wpf 中 DataGrid有沒屬性 可以顯示當前有多少行數據 我想要的結果是 實時更新這個數字
呃.....
你么看懂我寫的代碼嗎?
我只是把自帶的cs文件當成vm來用而已啊....
關鍵只是this.DataContext = this;這句話啊...
this.DataContext = this;
↑ ↑
這個this是畫面 這個this其實是vm,只是不想再寫個類了....
標準的MVVM 仔細看看...
我改一下你就理解了
其實 你這個問題的解決辦法很簡單
就是在你的模糊查詢的到結果後
1把結果槐旦集的count付值給綁定label.Content屬性的那個屬性上(我這里就是SelectedCount屬性),你的模糊查詢在vm里完成,那個屬性當然也在vm里... 必須的...
2然後調用INotifyPropertyChanged.PropertyChanged通知畫面更新 就可以了
順便說一句 應該就是程序往畫面的更新 所以綁定mode應該是Oneway
-----------------------------------------------------------------------------
修改後:
Xaml文件里:
<Label Content="{Binding SelectedCount, Mode=OneWay}"/>
vm.cs文件里:
public partial class ViewModel: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ViewModel()
{
}
private int _selectedCount;
public int SelectedCount
{
get { return _selectedCount; }
set
{
_selectedCount = value;
NotifyPropertyChanged("SelectedCount");
}
}
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
private DataTable SelectData(string _where)
{
//這里是你的模糊查詢方法
DataTable table = mySelector.Select(_where);
/凳銷/這里給你的Label賦棗明游值
SelectedCount = table.Count;
//把結果集返回去綁定Grid
return table
}
}
------------------------------------------------------------------------
修改前:
Xaml文件里:
<Label Content="{Binding SelectedCount, Mode=TwoWay}"/>
cs文件里:
public partial class MainWindow:Window,INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public MainWindow()
{
this.DataContext = this;
//這里設置好條件後查詢,查詢出幾條
DataTable table = mySelector.Select("mySQL");
int _count = table.Rows.Count;
//這里給你的Label賦值
SelectedCount = _count;
}
private int _selectedCount;
public int SelectedCount
{
get { return _selectedCount; }
set
{
_selectedCount = value;
NotifyPropertyChanged("SelectedCount");
}
}
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
}
只些了關鍵代碼
❷ wpf datagrid 怎麼增加數據行
首先需要弄清楚的是datagrid是用來呈現後台綁定的數據集合的。所以樓主想增加datagrid里的數據的話,可以直接通過添加後台數據來實現。wpf里綁定方式有許多種,默認為單向綁定。即後台數據變化,前台不會刷新神沖。毀瞎談前台做了某些交互,後台也不會發生數據的變化。當然,如果只需要完成樓主的意圖:即後台纖碰數據刷新,前台表格刷新的話,只需要將後台的數據實體實現INotifyPropertyChanged介面就可以了。
❸ WPF-動態生成DataGrid
在封裝自定義組件的時候,看到很多類似表格的控制項,表格中的數據都不是局拍固定的,每個表格的表條和內容都不一樣,如果直接在 xaml 文件中定義 DataGrid 的話,就顯得很麻煩了,可以將期封裝成一個動態生成的 DataGrid ,只需按照一定規則的數據格式,就可以生成表格。如下所示為封裝後的一個動態表格:
首先來定義一個數據格式,數據格式相對比較簡單,只需一個表頭欄位、內容欄位、列寬欄位。如下所示:
首先創建一個 UserControl ,然後在桐鉛羨裡面放入一個激漏 DataGrid ,並設置樣式,如下所示:
在 .cs 文件中,添加一個方法,用於傳遞數據,並根據數據動態生成表格,如下所示:
創建好表格後,然後再需要地方通過如下方式進行引入:
然後在 loaded 事件中加入測試數據,來調用 loadData 方法動態添加表格信息,如下所示:
按以下步驟來做,就可以快速的創建一個自定義的動態表格了。
個人博客
❹ WPF 中DataGrid的應用
解題思路:
對於1,在WPF的DataGrid中沒有顯示的自動增加的欄位屬性,因為DataGrid是用多個基本控制項組合而尺春成,datagridrow有個getIndex()方法可以獲得當前的row的Index,所以寫個convert即可。
對於2,對於Hyperlink來說,將它放入Page或者frame,或者NavagiteWindow的容器中,系統會自動打開連接的內容,附上代碼
Converter.cs
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
DataGridRow row = (DataGridRow)value;
var temp = row.GetIndex();
return temp+1;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
//xaml
<Frame Grid.Row="5">喊粗
<Frame.Content>
<DataGrid Name="dataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="序號"
Binding="{Binding Converter={StaticResource ResourceKey=debugConverter},RelativeSource={RelativeSource AncestorType=DataGridRow, Mode=FindAncestor},Mode=OneWay}">
</DataGridTextColumn>
<DataGridHyperlinkColumn Header="點擊鏈接" Binding="{Binding Address}">
</DataGridHyperlinkColumn>
</DataGrid.Columns>
</鄭困鎮DataGrid>
</Frame.Content>
</Frame>
//xaml.cs
public MainWindow()
{
InitializeComponent();
List<Bai> list1 = new List<Bai> { new Bai { Address = new Uri("http://www..com") } };
dataGrid.ItemsSource = list1;
//MessageBox.Show(dataGrid.Items.Count.ToString());
}
public class Bai
{
public Uri Address { get; set; }
}
❺ WPF中怎麼獲取dataGrid內的所有數據
試試這個謹閉蘆,不然的話只能循環讀取祥帶了
public DataTable GetDgToTable(DataGrid dgv)
{
DataTable dt = new DataTable();
for (int count = 0; count <態孝 dgv.Columns.Count; count++)
{
DataColumn dc = new DataColumn(dgv.Columns[count].Name.ToString());
dt.Columns.Add(dc);
}
for (int count = 0; count < dgv.Rows.Count; count++)
{
DataRow dr = dt.NewRow();
for (int countsub = 0; countsub < dgv.Columns.Count; countsub++)
{
dr[countsub] = Convert.ToString(dgv.Rows[count].Cells[countsub].Value);
}
dt.Rows.Add(dr);
}
return dt;
}
❻ winform DataGridView 大數據量 和 虛擬模式實例。該怎麼處理
可以選擇分頁操作的
wpf倒是有數據虛擬化,首先實現滾動條,然後滾動到元素後,再構造視版圖,離開權後,釋放視圖,繼承了虛擬化方法的控制項都可以實現;
winform只能靠自己去實現了,我覺得你現在的實力不夠實現象wpf那樣的虛擬化,光是不載入元素而模擬出滾動條都有點難度,分頁吧,也是最常用的手段了;
❼ WPF中使用datagrid顯示資料庫裡面的內容
這是一個小技巧啦。在Grid的最後一列,比如你圖上的「password」列,將這個列的寬度不設定為固長,而是設為自適應寬度(*)就可以了。
❽ wpf怎樣使用DataGrid控制項
DataGrid 是WPF中最常用的列表數據顯示控制項,該控制項功能強大,並且擁有強大的可定製性,下面是基本遲念用法:
關於敬旦慧DataGrid表格的定義就基本完成。
❾ WPF的DataGrid數據保存與更改
讀取和保存的方法很多
你是用什麼方式讀取數據的?針對用什麼方法保存數據。
❿ WPF中,我使用了datagrid,我想請問下當我向資料庫添加了新的數據,我該怎麼刷新datagrid裡面的數據
可以用定時重新獲取數據,重新賦值給DataGrid綁定的後台屬性,賦值完記得fire一個PropertyChanged事件,詳見INotifyPropertyChanged