簡體   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