手動で定義された列を持つDataGridを使用してWPFアプリケーションで作業しています。 そのDataGridでは、下限(10進値)と比較記号( "<"または "< =")を含むデータを入力できるようになります。WPFの既存のデータが表示されないObservableCollectionにバインドされたDataGridComboBoxColumn
データグリッド自体がStepDataSourceという名前のObservableCollectionにバインドされています
/// <summary>
/// Gets or sets the data of the stepfunction.
/// </summary>
public ObservableCollection<StepData> StepDataSource
{
get { return stepdataSource; }
set
{
stepdataSource = value;
RaisePropertyChanged("StepDataSource");
}
}
クラスStepData - のviewmodelの一部ではありません - 次のプロパティが含まれています
/// <summary>
/// Gets or sets the lower bound.
/// </summary>
public double LowerBound { get; set; }
/// <summary>
/// Gets or sets the assigned value.
/// </summary>
public double StepValue { get; set; }
/// <summary>
/// Gets or sets the lower comparer.
/// </summary>
public ArithmeticSignData LowerComparer2 { get; set; }
最後のプロパティLowerComparer2 ComboBoxで選択されたアイテムに必要です。
DataGrid内の私のコラムの一つは、私のviewmodelに別のObservableCollectionにバインドされてDataGridComboBoxColumnです:
public ObservableCollection<ArithmeticSignData> LowerComparers2 { get; set; }
クラスArithmeticSignDataは、コンボボックスで使用しなければならないキーと値のプロパティが含まれています。私はこのフォーラムでは、いくつかの記事では
<DataGrid x:Name="grd_stepdata"
Grid.Row="0"
Grid.Column="0"
Margin="5"
AutoGenerateColumns="False"
CanUserAddRows="True"
CanUserDeleteRows="True"
SelectionUnit="FullRow"
ItemsSource="{Binding StepDataSource, NotifyOnSourceUpdated=True, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<DataGrid.Columns>
<DataGridComboBoxColumn x:Name="col_LowerComparer2"
SelectedItemBinding="{Binding LowerComparer2, NotifyOnSourceUpdated=True, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="ArithmeticSignValue"
Header="LowComp"/>
</DataGrid.Columns>
</DataGrid>
:私はそのようなデータグリッドで列を定義した後
LowerComparers2 = new ObservableCollection<ArithmeticSignData>();
LowerComparers2.Add(new ArithmeticSignData("1", "<"));
LowerComparers2.Add(new ArithmeticSignData("2", "<="));
:のviewmodelで
public class ArithmeticSignData
{
/// <summary>
/// The constructor.
/// </summary>
/// <param name="key">The key.</param>
/// <param name="value">The value.</param>
public ArithmeticSignData(string key, string value)
{
ArithmeticSignKey = key;
ArithmeticSignValue = value;
}
public string ArithmeticSignKey { get; set; }
public string ArithmeticSignValue { get; set; }
}
iは、そのコレクションを充填していますItemsSourceをコードビハインドで設定する必要があることを知りました。
col_LowerComparer2.ItemsSource = vm.LowerComparers2;
私は、アプリケーションを起動し、アイテムを選択すると、私はviewmodelプロパティLowerComparer2で正しいキーと値で選択されたアイテムを見ることができます。 残念ながら、私はアプリを起動した後、列のビューモデルからの既存のデータを見ることができません。
1つ以上の属性を忘れましたか?
がStepDataSourceコレクションがタイプのビューモデルすなわちオブジェクト、オブジェクトが含まれていますLowerComparer2とLowerComparers2プロパティが定義されていること:あなたはすでにLowerComparers2コレクションに追加されました
ArithmeticSignData
オブジェクトのいずれかに設定する必要があり?あるいは、StepDataSourceとは何ですか?定義されている場所は? – mm8