1

WCFRiaServiceベースのプロジェクトにMVVMLightSilverlightプロジェクトを使用しています。いくつかの調査の後、RiaInstantFeedbackDataSourceでDevExpressDataGridを使用することにしました。グリッドのフォーカスされた行をModelViewプロパティにバインドするまで、すべてがうまく機能します。これがXAMLです。

<UserControl x:Class="OurProject.Silverlight.Views.Personnel.List"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
         xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" mc:Ignorable="d"
         DataContext="{Binding Personnel, Source={StaticResource Locator}}" 
         d:DesignWidth="640" d:DesignHeight="480">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="30" />
    </Grid.RowDefinitions>

    <dx:RiaInstantFeedbackDataSource x:Name="DataSource" QueryName="{Binding Path=QueryName}" KeyExpression="{Binding Path=KeyExpression}"
                                     DomainContext="{Binding Path=Context}" />

    <dxg:GridControl Name="grid" ItemsSource="{Binding ElementName=DataSource, Path=Data}" Grid.Row="0" AutoPopulateColumns="True" >
        <dxg:GridControl.View>
            <dxg:TableView x:Name="view" FocusedRow="{Binding Selected}" />
        </dxg:GridControl.View>
    </dxg:GridControl>
    <Button Grid.Row="1" Height="30" VerticalAlignment="Bottom" Content="Edit" Command="{Binding Edit}" />
</Grid>

このコードをデバッグすると(Editコマンドの実行後のブレークポイント)、FocusedRowのタイプがobject[]であることがわかりました。RowPropertyValueConverterを試しましたが、使用方法に関するドキュメントが見つかりません。選択した行(またはその行の任意のプロパティ[たとえばId列])をViewModelのプロパティにバインドするにはどうすればよいですか?

PS:このリンクを確認しましたが、RiaInstantDataSourceでは機能しません。

前もって感謝します。

4

1 に答える 1

1

OK、この問題を解決しました

AreSourceRowsThreadSafe = "True"

コードに加えて。

<dx:RiaInstantFeedbackDataSource x:Name="DataSource" QueryName="{Binding Path=QueryName}" KeyExpression="{Binding Path=KeyExpression}" AreSourceRowsThreadSafe="True" DomainContext="{Binding Path=Context}" />

マルチスレッドを使用してこれの影響を追跡し、重要な基礎をここに書き戻します。

于 2012-05-16T11:53:31.897 に答える