私は CommentsData クラスを持っており、これは DataGrid で値をロード、操作、および保存するために使用されます。グリッドのドロップダウンとして表示されるクラスの Status フィールドを作成したいと考えています。コメントの値は、一度だけ入力する必要があります。私は多くのバリエーションを試しましたが、これはうまくいきません。コンボは空です。コンボに値を入力できるようにする必要があり、選択が変更されたときに値がそこに残り、消えないようにする必要があります。
グリッドの Xaml は次のとおりです (更新 2)
<DataGrid Grid.Row="2" AutoGenerateColumns="False" Height="Auto" HorizontalAlignment="Stretch" Name="grdComments" VerticalAlignment="Stretch" CanUserAddRows="True" CanUserDeleteRows="True" BeginningEdit="grdComments_BeginningEdit" InitializingNewItem="grdComments_InitializingNewItem" PreviewKeyDown="grdComments_PreviewKeyDown" SizeChanged="grdComments_SizeChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Author}" Header="Author" />
<DataGridTemplateColumn Header="Status" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding UserValues}" DisplayMemberPath="UserStatus" SelectedValuePath="UserStatus" SelectedValue="{Binding Status, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Path=Comment}" Header="Comment" Width="570" />
</DataGrid.Columns>
CommentData クラスのコードは次のとおりです (更新 2)
public class CommentsData
{
public string Author { get; set; }
public string Status { get; set; }
public string Comment { get; set; }
public string Username { get; set; }
public ObservableCollection<StatusValue> UserValues { get; set; }
public CommentsData()
{
UserValues = new ObservableCollection<StatusValue>();
UserValues.Add(new StatusValue("New"));
UserValues.Add(new StatusValue("Open"));
UserValues.Add(new StatusValue("ReOpen"));
UserValues.Add(new StatusValue("Closed"));
}
}
public class StatusValue
{
public string UserStatus { get; set; }
public StatusValue (string value)
{
UserStatus = value;
}
}
コメントリストが初期化されるコードは次のとおりです
private List<CommentsData> _commentsList;
private void InitializeObjects()
{
_commentsList = new List<CommentsData>();
grdComments.ItemsSource = _commentsList;
}
上記のコードは機能しています すべてのフィードバックに感謝します