1

我们正在为基于 WCF Ria 服务的项目使用 MVVM Light Silverlight 项目。经过一些研究,我们决定将 DevExpress DataGrid 与 RiaInstantFeedbackDataSource 一起使用。一切都很好,直到我们想将网格的焦点行绑定到 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

好的,我们解决了这个问题

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 回答