【发布时间】:2013-04-10 09:28:21
【问题描述】:
所有,我有一些测试代码可以处理一些定义为
的测试数据private ObservableCollection<TestClass> _testData = new ObservableCollection<TestClass>();
public ObservableCollection<TestClass> TestData
{
get { return _testData; }
set { _testData = value; }
}
并在设计时通过
绑定<DataGrid x:Name="dataGrid" ItemsSource="{Binding TestData}".../>
我创建了一个DataGrid,它在运行时通过
dataGrid.ItemsSource = BuildDataGridColumns(cultureDict).Tables[0].AsDataView();
与
private DataSet BuildDataGridColumns(Dictionary<string, string> cultureDict,
DataTable additionalDt = null)
{
// ...
}
效果很好,但是由于(我相信)ItemsSource="{Binding TestData}" 不存在,更新用于处理测试数据的网格视觉效果的代码不再起作用。应该绑定插入到TextBox 和DataGrid 单元格中的文本的 XAML 是:
<DataGrid x:Name="dataGrid"
local:DataGridTextSearch.SearchValue="{Binding ElementName=searchBox, Path=Text, UpdateSourceTrigger=PropertyChanged}"
AlternatingRowBackground="Gainsboro" AlternationCount="2" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<DataGrid.Resources>
<local:SearchValueConverter x:Key="searchValueConverter" />
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="local:DataGridTextSearch.IsTextMatch">
<Setter.Value>
<MultiBinding Converter="{StaticResource searchValueConverter}">
<Binding RelativeSource="{RelativeSource Self}" Path="Content.Text" />
<Binding RelativeSource="{RelativeSource Self}" Path="(local:DataGridTextSearch.SearchValue)" />
</MultiBinding>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="local:DataGridTextSearch.IsTextMatch" Value="True">
<Setter Property="Background" Value="Orange" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.Resources>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell" >
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#FF007ACC"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
我的问题是;
如何将我的
DataGrid与我在运行时创建的数据集创建相同的绑定?
有人提出原因是我的数据没有实现INotifyCollectionChanged接口,但是由于数据的可变性,我必须在运行时将数据加载到DataGrid中。
如果数据的结构可以更改,我如何将此数据绑定到
DataGrid作为实现INotifyPropertyChanged的类?
非常感谢您的宝贵时间。
【问题讨论】:
标签: c# wpf binding datagrid inotifycollectionchanged