【问题标题】:How to bind a value to user control property?如何将值绑定到用户控件属性?
【发布时间】:2011-02-10 10:56:37
【问题描述】:

现在,我刚收到AG_E_PARSER_BAD_PROPERTY_VALUE。我想这是因为我没有对我的绑定属性做任何事情。有什么我可以做的吗?

                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <Image Name="imgSvrIco" Source="{Binding pic}"/>
                                <StackPanel Orientation="Vertical" Margin="2,2,2,10" Tag="{Binding tag}" MouseLeftButtonUp="StackPanel_MouseLeftButtonUp_1">
                                    <TextBlock Name="lbTitle"  Text="{Binding title}" Margin="0,0,0,0" FontWeight="Bold" />
                                    <TextBlock Text="{Binding text}" Visibility="{Binding textVisibility}"/>
                                    <StackPanel Orientation="Horizontal">
                                        <TextBlock Text="{Binding time}"/>
                                        <TextBlock Text=" By " />
                                        <!--<my:UserBrand Address="{Binding address}" />-->
                                    </StackPanel>
                                </StackPanel>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>

注释代码是用户控件

   at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.MeasureNative(IntPtr element, Single inWidth, Single inHeight)
   at MS.Internal.XcpImports.UIElement_Measure(UIElement element, Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureChild(UIElement child, Size layoutSlotSize)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.MeasureOverrideNative(IntPtr element, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
   at MS.Internal.XcpImports.FrameworkElement_MeasureOverride(FrameworkElement element, Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(Size availableSize)
   at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)

控件xaml

<UserControl x:Class="Shisoft_Express_Communicate_mobile.controls.UserBrand"
    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"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    d:DesignHeight="34" d:DesignWidth="395">
        <StackPanel HorizontalAlignment="Stretch" Name="stackPanel1" VerticalAlignment="Stretch" Orientation="Horizontal" Margin="0,0,0,-1">
            <Image Name="image1" Stretch="Uniform" Width="32" Height="32" VerticalAlignment="Center" />
            <TextBlock Name="textBlock1" Text="TextBlock" TextWrapping="NoWrap" Margin="3,0,0,0" />
        </StackPanel>
</UserControl>

控制cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Text.RegularExpressions;
using Shisoft_Express_Communicate_mobile.userinfos;
using System.Windows.Media.Imaging;

namespace Shisoft_Express_Communicate_mobile.controls
{
    public partial class UserBrand : UserControl
    {
        public UserBrand()
        {
            InitializeComponent();
        }
        private String _address;
        public String address
        {
            get { return _address; }
            set
            {
                _address = value;
                //sinat:shisoftgenius@hot...shisofttester:::shisoft
                String[] strs = Regex.Split(_address, ":::");
                String imgCode;
                String labText;
                if (strs[0] != "user" && strs[0] != "contact")
                {
                    imgCode = strs[0].Split(':')[0];
                }
                else
                {
                    imgCode = strs[0];
                    if (imgCode == "contact")
                    {
                        if (global.ContactIDTomName.ContainsKey(long.Parse(strs[1])))
                        {
                            strs[1] = global.ContactIDTomName[long.Parse(strs[1])];
                        }
                    }
                }
                labText = strs[1];
                ImageSource imgsrc1 = new BitmapImage(new Uri(SEC_Services.Httprequest.BaseURL + "images/svr-icons/" + imgCode + ".png"));
                this.image1.Source = imgsrc1;
                this.textBlock1.Text = labText;
            }
        }


    }
}

【问题讨论】:

  • Address属性的类型和地址值是什么?
  • @BMiloshevska 两者都是String
  • @Shisoft:地址是依赖属性吗?
  • @BMiloshevska 我认为这是问题所在。什么是依赖属性?
  • @BMiloshevska 地址不是依赖属性

标签: silverlight data-binding windows-phone-7


【解决方案1】:

信息不足。

AG_E_PARSER_BAD_PROPERTY_VALUE 异常包含发生问题的确切指针(即 Xaml 文件中的行/位置)。找到它,确定 Xaml 代码中的位置并尝试修复它。

其次,即使您向我们展示了 Xaml 位置,我们也只能在您隐藏语义时检查语法错误 - 对应的。 C# 代码。

您说“我确定 Binding 表达式是正确的”,但通常很容易被忽略,例如“地址”而不是“地址”。 (你真的使用非标准命名约定吗?)

【讨论】:

  • 指针是Line: 9 Position: 59。但目前我找不到与此问题相关的任何内容。
  • 如果您需要任何帮助,请告诉我们“第 9 行,第 59 位”指向的 Xaml 位置。还有相关的C#代码。
  • 好的,最后一次试用。如果你提供完整的信息,我会调查的。
  • 我的意思是您没有指定“line 9, pos 59”的位置。它显然没有指向添加的代码。例如,“地址”属性未定义等。如果您提供完整信息,我将运行它并提供答案。如果没有,这是我最后的反应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
相关资源
最近更新 更多