所有,我有一些測試代碼是被定義爲如何將數據綁定到數據網格在運行時
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}"
不存在。是應該在DataGrid
的細胞插入TextBox
和文字結合的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
如果數據結構可以改變一個類?
非常感謝您的時間。
這是一個很好的答案,我認識並開始了昨晚的工作。非常感謝你花時間陪伴... – MoonKnight