Xceed DataGridにグリッド用に定義されたEditTemplate
が定義されています。XceedData Column EditTemplateを別のプロパティにバインドする
グリッドは約6列のコレクションにバインドされたアイテムのリストを示し、EditTemplate
は数量を入力するためのTextBox
コントロールです。 IsReadOnly
プロパティを別のプロパティにバインドして、アイテムにシリアル番号があるようにするには、IsReadOnly
をtrueに設定してユーザーが値を入力できないようにします。同じコレクション内のSerialNum
プロパティにバインドし、それをコンバーターに渡してtrue/false値を返したいとします。私はコンバータを書きました。しかし、私はコンバータに渡すプロパティにバインドする問題があります。マイDataGridCollectionViewSource
は十分に簡単です:
<xcdg:DataGridCollectionViewSource x:Key="transferItems" Source="{Binding TransferItems}" />
TransferItems
は私のViewModelに設定され、すべての列は、適切にバインドされます。私の一般的なディスプレイのすべての列については
を経て、彼らが適切に表示されている:私の問題はxcgd:CellEditor
テンプレートを定義していると私は私の問題はRelativeSource
の周りにあるかなり確信して
<xcdg:Column Title="Serial No." AllowSort="False" FieldName="SerialNum" />
。私は多くの異なる組み合わせを試してみましたが、TransferItems.SerialNum
のプロパティをViewModelから取得しようとしましたが、何の組み合わせも機能していません。
これは私が現在持っているものです:
ランタイムエラーを与える<xcdg:Column Title="Xfer Qty Good" TextWrapping="Wrap" ReadOnly="False" Width="50" AllowGroup="False" AllowSort="False" FieldName="TransferQtyGood">
<xcdg:Column.CellEditor>
<xcdg:CellEditor>
<xcdg:CellEditor.EditTemplate>
<DataTemplate>
<TextBox x:Name="QtyGood" Margin="2,2,2,2" Width="50" HorizontalAlignment="Center" VerticalAlignment="Center"
Text="{xcdg:CellEditorBinding}" IsReadOnly="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type xcdg:DataGridCollectionViewSource}}, Path=DataContext.TransferItems.SerialNum, Converter={StaticResource serialToEnabledConverter}}"
/>
</DataTemplate>
</xcdg:CellEditor.EditTemplate>
</xcdg:CellEditor>
</xcdg:Column.CellEditor>
</xcdg:Column>
:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='Xceed.Wpf.DataGrid.DataGridCollectionViewSource', AncestorLevel='1''. BindingExpression:Path=DataContext.TransferItems.SerialNum; DataItem=null; target element is 'TextBox' (Name='QtyGood'); target property is 'IsReadOnly' (type 'Boolean')
私はエラーが私に言っているが、私はちょうど適切なRelativeSource
パスを取得していますかを理解。私はRelativeSource
の列挙に関する役に立つポストをいくつか読んだことがありますが、まだ何か不足しています。