繁体   English   中英

如何在C#中动态创建PanoramaItem控件?

[英]How dynamically create PanoramaItem control in c#?

**<controls:PanoramaItem Header="first item">
            <!--Double line list with text wrapping-->
            <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Items}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="0,0,0,17" Width="432" Height="150">
                            <StackPanel Orientation="Horizontal">
                                <TextBlock x:Name="Name" Text="Name: " TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" Margin="5,0,0,0"/>
                            </StackPanel>
                            <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                            <TextBlock Text="{Binding LineThree}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                            <TextBlock Text="{Binding LineFour}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>



            </ListBox>
        </controls:PanoramaItem>**

这是.xmal部分。 但是我必须在c#中执行此操作。然后请帮助我如何执行此操作。

ListBox listBox = new ListBox();
listBox.Margin = new Thickness(0, 0, -12, 0);
listBox.SetBinding(ListBox.ItemsSourceProperty, new Binding("Items"))

CreateItemTemplate(listBox);

PanoramaItem pi = new PanoramaItem();
pi.Header = "first item";
pi.Content = listBox;

在实现CreateItemTemplate ,有两种选择,要么以编程方式创建DataTemplate ,要么在ResourceDictionary中将其作为资源创建并使用该资源。 到目前为止,后者是最简单,最好的方法。

要以编程方式执行此操作,请参见如何在代码中定义DataTemplate?

要使用资源,您可以这样

public void CreateItemTemplate(ListBox listBox)
{
    object myDataTemplate = FindResource("myDataTemplateResource"); // This only works if the resource is available in the scope of your control. E.g. is defined in MyControl.Resources
    listBox.SetResourceReference(ListBox.ItemTemplateProperty, myDataTemplate);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM