我在
WPF中试验数据绑定
我有这个绑定到mysql视图的数据网格,它只是只读,但我希望它在对数据库进行更改时自动刷新.
在谷歌找不到任何有用的东西,我不知道从哪里开始.
这是dataprovider类.
class ConDataProvider { private MysqLDataAdapter adapter; private Data data; private DataTable table; public ConDataProvider(string query) { data = new Data(); table = new DataTable("con_FullGrid"); adapter = data.getAdapter(query); adapter.Fill(table); } public DataView GetDView() { dv = new DataView(); dv.Table = table; return dv; } }
而窗口的XAML
<Window x:Class="HelioWPF_Alpha01.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:local="clr-namespace:HelioWPF_Alpha01" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="676" Width="924" MinHeight="300" MinWidth="463" Background="{x:Null}"> <Window.Resources> <ObjectDataProvider x:Key="ConDataProvider" ObjectType="{x:Type local:ConDataProvider}"> <ObjectDataProvider.ConstructorParameters> <sys:String>SELECT * FROM con_FullGrid</sys:String> </ObjectDataProvider.ConstructorParameters> </ObjectDataProvider> <ObjectDataProvider x:Key="btable" ObjectInstance="{StaticResource ConDataProvider}" MethodName="GetDView"/> </Window.Resources> <Grid Name="mainGrid" DataContext="{Binding Source={StaticResource btable}" KeyDown="mainGrid_KeyDown" FlowDirection="LeftToRight" > <DataGrid AutoGenerateColumns="True" ItemsSource="{Binding}" Name="dataGrid1" FrozenColumnCount="20" RowHeight="25" Grid.ColumnSpan="4" ColumnWidth="*" MouseDoubleClick="dataGrid1_MouseDoubleClick" SelectionMode="Single" Grid.Row="2" Grid.Column="1" TabIndex="1" GotKeyboardFocus="dataGrid1_GotKeyboardFocus"> <DataGrid.AlternatingRowBackground> <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> <GradientStop Color="Black" Offset="0" /> <GradientStop Color="#16436DF8" Offset="0" /> </LinearGradientBrush> </DataGrid.AlternatingRowBackground></DataGrid> </Grid>
我一直在做的是通过在后面的代码中重新初始化ConDataProvider类并在各种事件上重新绑定datagrid来伪装它.
但这是一个丑陋的黑客.
如果必须的话,我不介意重新设计整个事情.
Data类只包含连接字符串和一些与数据库交互的方法.
你可以在这里看到它:http://pastebin.com/m9HLfwEQ
提前致谢.
希望得到一些好的建议.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。