すべて、次のように定義されたいくつかのテストデータで動作するいくつかのテストコードがあります
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
と のセルにあるテキストをバインドすることになっている XAML は次のDataGrid
とおりです。
<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
実行時に作成するデータ セットにmy と同じバインディングを作成するにはどうすればよいですか?
私のデータがインターフェイスを実装していないことが理由だと誰かが示唆していますが、データの可変性のために、実行時INotifyCollectionChanged
にデータをロードする必要があります。DataGrid
DataGrid
データの構造が変更される可能性がある場合、このデータを実装するクラスとしてバインドするにはどうINotifyPropertyChanged
すればよいですか?
ありがとうございました。