c# - Silverlight Master/Detail 的情况

标签 c# silverlight datagrid

我有一个数据网格。这个 DataGrid 的 ItemsSource 是在 WCF 调用的 Completed 事件中设置的。但是,当在主网格 DataTemplate 中添加一个 Detail Datagrid 并适本地命名它时......需要填充它主网格选择更改事件但我的代码隐藏无法识别细节网格。我无法像设置 grdMaster 那样设置 grdDetail 的 ItemsSource。那么如何填充我的详细数据网格?

Xaml 文件

  <Grid x:Name="LayoutRoot">

    <sdk:DataGrid x:Name="dgCustList" AutoGenerateColumns="False" Background="Transparent" SelectionChanged="dgCustList_SelectionChanged">
        <sdk:DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <StackPanel x:Name="stkPanel">
                    <sdk:DataGrid x:Name="dgCustDetail" RowDetailsVisibilityMode="VisibleWhenSelected" AutoGenerateColumns="False"  Background="Transparent"/>
                </StackPanel>
            </DataTemplate>
        </sdk:DataGrid.RowDetailsTemplate>
    </sdk:DataGrid>
    <Grid.Projection>
        <PlaneProjection x:Name="Projection"/>
    </Grid.Projection>
</Grid>

和代码隐藏

  public MusteriListe()
    {
        InitializeComponent();
        var stb1 = new Storyboard { Duration = new Duration(TimeSpan.FromSeconds(1)), SpeedRatio = 3 };

        var daY1 = new DoubleAnimation { From = 0.00, To = 90.00 };
        Storyboard.SetTargetName(daY1, "Projection");
        Storyboard.SetTargetProperty(daY1, new PropertyPath("RotationX"));
        stb1.Children.Add(daY1);
        this.Resources.Add("EndOfPage", stb1);

        var stb = new Storyboard();
        stb.Duration = new Duration(TimeSpan.FromSeconds(1));
        stb.SpeedRatio = 3;

        var daY = new DoubleAnimation { From = -90.00, To = 0.00 };
        Storyboard.SetTargetName(daY, "Projection");
        Storyboard.SetTargetProperty(daY, new PropertyPath("RotationX"));
        stb.Children.Add(daY);
        Resources.Add("StartOfPage", stb);

        dgCustList.Columns.Add(new DataGridTextColumn
        {
            Header = "ID",
            Binding = new Binding("CustomerID")
        });
        dgCustList.Columns.Add(new DataGridTextColumn
        {
            Header = "Müşteri Ad",
            Binding = new Binding("CustomerName")
        });
        dgCustList.Columns.Add(new DataGridTextColumn
        {
            Header = "Müşteri Soyad",
            Binding = new Binding("CustomerSurname")
        });
        dgCustList.Columns.Add(new DataGridTextColumn
        {
            Header = "Müşteri Tel",
            Binding = new Binding("CustomerPhone")
        });
        LoadGrid();
    }
    private void LoadGrid()
    {
        var client = new EczServiceClient();
        client.CustomerInfoCompleted += client_CustomerInfoCompleted;
        client.CustomerInfoAsync();
    }
    void client_CustomerInfoCompleted(object sender, CustomerInfoCompletedEventArgs e)
    {
        dgCustList.ItemsSource = e.Result;
    }

    private void dgCustList_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {

        var customer = dgCustList.SelectedItem as CustomerInfo;
        if (customer == null) return;
        var client = new EczServiceClient();
        client.CustomerDetailCompleted += client_CustomerDetailCompleted;
        client.CustomerDetailAsync(customer.CustomerID);

    }
    void client_CustomerDetailCompleted(object sender, CustomerDetailCompletedEventArgs e)
    {
        IN HERE I WANT TO FILL DATAGRID LIKE MASTER GRID BUT ITS NOT LET ME ( dgCustDetail.ItemSource = e.Result)
    }

最佳答案

您没有为详细数据网格定义绑定(bind),并将自动生成列设置为 false。在 client_CustomerDetailCompleted 事件触发之前,您需要在 XAML 或代码隐藏中定义绑定(bind)。仅单独设置项目源是行不通的,因为详细信息数据网格不包含列。这是MVVM pattern的地方派上用场。

关于c# - Silverlight Master/Detail 的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8501030/

相关文章:

silverlight - SL 4 和 WCF 数据服务 : InvalidOperationException -> SecurityException

reactjs - Material UI 数据网格性能

c# - 空对象的 FluentValidation 规则

c# - View 对象中的 LIST<VIEWMODEL> 在 Controller mvc.net 中返回 null

c# - 如何使用 C# 登录到 ASP.Net Forms Authenticated 站点?

c# - WPF C# - DataGrid 在用户按键上选择项目

c# - Linq 查询以列形式返回国家/地区,以行形式返回城市并在单元格中计数

c# - 使用泛型在编译时强制执行有效结构

silverlight - 使用 Active Directory 的 Silverlight 5 RIA 服务身份验证示例

c# - 使用Silverlight 4从实时音频流中读取歌曲标题/歌手吗?