1

レイアウトのシリアル化のために、GridControl の CommandParameter を渡す必要があります。

コマンドを実行するためのボタンは子ユーザーコントロールにあります。

RelativeSource を使用して、GridControl を含む Grid にアクセスしています。

編集: このボタンは、GridSettings.xaml という名前のユーザー コントロールにあります。これは Grid.xaml の子です。

<Button Content="Save Defaults" Command="{Binding SaveDefaultsCommand}" Width="90" CommandParameter="{Binding Path=gridControl1, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}, AncestorLevel=2}}"/>

Grid.xaml 親ビューの関連セクションを次に示します。

                <Grid Grid.Row="1" x:Name="GridView">
                <dxg:GridControl x:Name="gridControl1"  ItemsSource="{Binding WeldReports}" AutoPopulateColumns="True" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Loaded">
                            <Custom:EventToCommand Command="{Binding GridLoadedCommand}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                    <dxg:GridControl.View>
                        <dxg:TableView Name="tableView1" ShowTotalSummary="True" />
                    </dxg:GridControl.View>
                </dxg:GridControl>
            </Grid>

エラー: System.Windows.Data エラー: 40: BindingExpression パス エラー: 'gridControl1' プロパティが 'object' ''Grid' (Name='GridView')' に見つかりません。BindingExpression:Path=gridControl1; DataItem='Grid' (Name='GridView'); ターゲット要素は 'ボタン' (Name=''); ターゲット プロパティは 'CommandParameter' (タイプ 'Object') です。

Path=gridControl1 は実際には ElementName=gridControl1 である必要があります...しかし、ElementName は RelativeSource では機能しません...だから私は読みました。

4

1 に答える 1