时间:2011-01-06 18:38:17

标签: c# silverlight xaml data-binding windows-phone-7

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

一种选择是绑定到资源。

  1. 我将Foo和Items属性移动到了一个新类=> SomeClass
  2. 添加了namespace => UserControl中的xmlns:local="clr-namespace:BindingTest"
  3. 我在UserControl中设置了一个资源=&gt; <local:SomeClass x:key="context"/>
  4. 我在xaml =&gt;中绑定了Layoutroot.DataContext DataContext="{Binding Source={StaticResource context}}",虽然您也可以在代码背后执行此操作。
  5. 最后,我将textbox.text绑定到资源。 Text="{Binding Source={StaticResource context}, Path=Foo}"

    <UserControl.Resources>
        <local:SomeClass x:Key="context" />
    </UserControl.Resources>
    
    <StackPanel x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource context}}">
    
        <ListBox ItemsSource="{Binding Items}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding}" />
                        <TextBlock Text="{Binding Source={StaticResource context}, Path=Foo}" />
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    
    </StackPanel>
    

  6. 背后的代码:

    using System.Collections.Generic;
    using Microsoft.Phone.Controls;
    
    namespace BindingTest
    {
        public partial class MainPage : PhoneApplicationPage
        {
            // Constructor
            public MainPage()
            {
                InitializeComponent();
            }
        }
    
        public class SomeClass
        {
            private IList<string> _data = new List<string>() { "foo", "bar", "baz" };
            public IList<string> Items
            {
                get
                {
                    return _data;
                }
            }
    
            public string Foo { get { return "the moon"; } }
        }
    }
    

答案 2 :(得分:0)