如何绑定Stackpanel和stringFormat?

时间:2011-06-10 22:15:50

标签: wpf silverlight

我有一些stackpanel,在他下面有4个文本块,需要显示一些信息。 我对stackpanel(DataContext)进行了一些绑定,并将textblock与绑定到stackpanel的对象保存的信息绑定在一起。

我写了代码+ xaml并没什么用。 我对格式错误有异常。

代码:

 public partial class SomeDemoClass: UserControl
{
    classObjDemo c1;

    public SomeDemoClass()
    {
        InitializeComponent();

        c1 = new classObjDemo()
        {
              val1 = 5.5,
              val2 = 2.3
        }; 
    }
 }

xaml(与'SomeDemoClass'类匹配)

   <StackPanel x:Name="LayoutRoot" DataContext="{Binding ElementName=SomeDemoClass, Path=c1">

      <TextBlock Text="{Binding val1, StringFormat={0:F} }" />
      <TextBlock Text="{Binding val2, StringFormat={0:F} }" />


   </StackPanael>

1 个答案:

答案 0 :(得分:1)

你把x:Name =“SomeDemoClass”放在你的xaml的op中,并使c1成为一个公共属性而不是它可以工作的字段。 ElementName按名称引用xaml中的元素,绑定仅适用于属性和依赖项属性。

<UserControl x:Name="SomeDemoClass" ...

public classObjDemo c1 { get; set; }

还要检查Visual Studio输出窗口是否存在绑定错误。

修改

还要确保classObjDemo的v1和v2是公共属性

逃离你的xaml。见http://elegantcode.com/2009/04/07/wpf-stringformat-in-xaml-with-the-stringformat-attribute/

<TextBlock Text="{Binding val2, StringFormat={}{0:F} }" />