【问题标题】:Combobox not visible to code behind in Silverlight在 Silverlight 中的代码后面看不到组合框
【发布时间】:2011-03-28 19:16:10
【问题描述】:

我一直在尝试将项目添加到组合框,但似乎无法获取文件背后的代码来识别添加到 xaml 的组合框。我很确定我错过了一些简单的东西。基本上,这里的 xaml 说明了一个空的组合框。后面的代码执行服务,等待 json 返回并反序列化它。不幸的是我无法得到

xaml:

<navigation:Page x:Class="Growing.Views.Room" 
       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"
       mc:Ignorable="d"
       xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
       d:DesignWidth="950" d:DesignHeight="480"
       Title="Home" Style="{StaticResource PageStyle}" DataContext="{Binding}" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">
<Grid x:Name="LayoutRoot" ShowGridLines="True" Background="#FF631C00">
    <Grid.ColumnDefinitions>
    </Grid.ColumnDefinitions>
    <Rectangle Height="298" HorizontalAlignment="Left" Margin="195,94,0,0" Name="rect" Stroke="Black" StrokeThickness="2" VerticalAlignment="Top" Width="582" Fill="#FFAAAAAA" RadiusY="0.25" RadiusX="0.25" />
    <sdk:Label Height="38" HorizontalAlignment="Left" Margin="387,160,0,0" Name="label1" VerticalAlignment="Top" Width="203" Content="Select a Room" FontSize="24" FontWeight="Bold" />
    <sdk:Label Height="18" HorizontalAlignment="Left" Margin="312,240,0,0" Name="label2" VerticalAlignment="Top" Width="69" Content="Area:" FontSize="14" />
    <ComboBox x:Name="RoomAreas" Height="23" HorizontalAlignment="Left" Margin="418,235,0,0" VerticalAlignment="Top" Width="209" />
</Grid>

背后的代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Runtime.Serialization.Json;
using System.ServiceModel.Web;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;
using Growing.DataConnectionRef;

namespace Growing.Views
{
    public partial class Room : Page
    {
        public Room()
        {
            InitializeComponent();
            //Asynchronously call the EndReceive Web Service to change the status of an existing open lot record
            WebClient GRService = new WebClient();
            GRService.DownloadStringCompleted += new DownloadStringCompletedEventHandler(GRService_DownloadStringCompleted);
            GRService.DownloadStringAsync(new Uri("/servicestack/GetAreas", UriKind.Relative));
        }

        static void GRService_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            List<Area> dataList = new List<Area>();
            MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(e.Result));
            DataContractJsonSerializer ser = new    DataContractJsonSerializer(dataList.GetType());
            dataList = ser.ReadObject(memoryStream) as List<Area>;
            memoryStream.Close();
            RoomAreas.ItemSource = dataList;

        }

    }
}

在 RoomAreas.ItemSource 我收到错误 An object reference is required for the non-static field, method, or property 'Growing.Views.Room.RoomAreas'

抱歉,如果这很难理解。有人知道这里可能发生什么吗?

提前谢谢你!

【问题讨论】:

    标签: c# .net silverlight json xaml


    【解决方案1】:

    使 GRService_DownloadStringCompleted 方法非静态

    void GRService_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
            {
                List<Area> dataList = new List<Area>();
                MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(e.Result));
                DataContractJsonSerializer ser = new    DataContractJsonSerializer(dataList.GetType());
                dataList = ser.ReadObject(memoryStream) as List<Area>;
                memoryStream.Close();
                RoomAreas.ItemSource = dataList;
    
            }
    

    【讨论】:

      【解决方案2】:

      尝试将 ItemsSource="{Binding}" 添加到 Xaml 中的组合框属性

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2011-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多