私のDatagrid ComboBox選択項目をPowerShellオブジェクトに正しくバインドするのに問題があります。私は 'UpdateSourceTrigger = PropertyChanged'パラメータでComboBoxの双方向バインディングを使用しています。ソースオブジェクトはComboBoxに項目として正しく追加され、選択が変更されるとソースオブジェクトが更新されます。ただし、オブジェクトを保存したり、最初に起動したりすると、選択した項目がバインドされません。代わりに、すべてのComboBoxが選択された値を持たないとして生成されます。WPF Datagrid Combobox SelectedItemがPowershellオブジェクトに正しくバインドされていません
XAML:
<DataGrid Name="CustomDescription_Fields_DG" HorizontalAlignment="Left" Width="626" Margin="185,113,0,87" IsReadOnly="True" AutoGenerateColumns="False" GridLinesVisibility="None" AlternatingRowBackground="#FFEFEFF2" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Field}" Header="Applied Fields" Width="395"/>
<DataGridTemplateColumn Header="Position" Visibility="Visible" Width="60">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedItem="{Binding Path=Position, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding ItemCount}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="BorderBrush">
<Setter.Value>
<SolidColorBrush Color="Transparent"/>
</Setter.Value>
</Setter>
<Setter Property="Foreground"
Value="{DynamicResource
{x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="Transparent"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
WPFアプリケーションが起動:
をあなたは、アプリケーションがコンボボックスの項目が正しくのItemsSourceオブジェクトの「ITEMCOUNT個」フィールドにバインドされていることを起動したときにことがわかります。何が起こるか(または達成しようとしているのは少なくとも)、選択されたアイテムは、ItemsSourceオブジェクトの 'Position'フィールド内で定義されたアイテムでなければなりません。
これは何が起こっているかの内訳です:
私は私が間違っているのかわからないようです。どんな助けも非常に高く評価されるでしょう。あなたが結合DisplayMemberPathとのSelectedItemを定義する必要があり
Object being added as Itemssource
こんにちは、返信ありがとうございます。 「DisplayMemberPath」が正確に何に設定されているかについて、少し光を当ててください。上記の私は、オブジェクトがDatagridにどのように適用されているかを概説したPSコードを元の投稿に編集しました。それ以上のコードが必要な場合は、私に知らせてください。私はこれを解決するために必死です! – Haliax
私の例では、Symbolは、私の場合はItemsSourceであるDataTableの列の名前です。すべてがコンボボックスのItemsSourceの構成に依存します。あなたのケースでは、これは単なる整数のリストだと思うので、このままにしておいてください。 – AQuirky
はい、私のitemsourceは1〜10の整数を含む列です。次に、私はコンボボックスの選択値にしたい単一の整数を含む2番目の列を持っています。バインディングは、コンボボックスから整数の1つを選択すると、itemsourceオブジェクトが正しく更新されますが、データグリッドが更新されると、選択項目が表示されなくなります。 – Haliax