代码之家  ›  专栏  ›  技术社区  ›  Aidenn

在Silverlight中,除了ListBox之外,还有哪些结构可以用于绑定?

  •  0
  • Aidenn  · 技术社区  · 14 年前

    我需要简单地向Silverlight中的自定义用户控件提供属性的内容。

    我的控制是这样的:

    <UserControl x:Class="SilverlightApplication.Header"
    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"
    d:DesignWidth="300" d:DesignHeight="120">
    
    <Grid x:Name="Header_Layout">
        <StackPanel x:Name="hiHeaderContent" Width="Auto" Margin="73,8,8,8">
            <TextBlock x:Name="User:" Text="{Binding name}" />
    </StackPanel>
    </Grid>
    

    我尝试从另一个控件使用此用户控件,在该控件中,我尝试将参数“name”传递给上一个UserControl(“Header”)。

    我不需要创建“列表框”,因为我只有一个标题,所以我尽量避免这样做:

                <ListBox x:Name="HeaderListBox" Grid.Row="0">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <SilverlightApplication:Header/>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
    

    要发送“用户”帐户,请使用:

    HeaderListBox.ItemsSource = name;
    

    有没有其他结构可以代替ListBox只传递一次参数?它不会是一个列表,它只是一个标题。。。

    谢谢您!

    2 回复  |  直到 14 年前
        1
  •  1
  •   JustinAngel    14 年前

    此代码段不会执行预期的操作。

    尝试更改以下2行以使用正确的数据绑定:

    1. HeaderListBox.ItemsSource = new string[] { name };
    2. Text="{Binding}"
    


    第二个更改是必需的,因为UserControl不可能知道属性标识符“name”,因为您只分配了一个值。

    似乎您在数据绑定方面遇到了一些基本问题,请允许我建议您回顾一下Silverlight.net上的一些优秀参考资料: http://www.silverlight.net/learn/quickstarts/bindingtocontrols/ http://www.silverlight.net/learn/videos/all/databinding-and-datatemplates-in-xaml
    http://www.silverlight.net/learn/videos/all/an-overview-of-databinding-and-datatemplates-using-expression-blend
    http://www.silverlight.net/learn/videos/all/databinding-to-control-properties

        2
  •  0
  •   gammelgul    14 年前

    你可以用 DataContext

    <SilverlightApplication:Header DataContext="{Binding name}" />