0

PhoneApplicationPage.Resourcesにこのスタイルがあります。

<phone:PhoneApplicationPage.Resources>
    <data:CarListView x:Key="carCollection" />
    <Style x:Key="ListBoxItemStyle1" TargetType="ListBoxItem">
        <Setter Property="Template">
        ....

StackPanelに1つのアイテムだけで新しいリストボックスを追加しようとしています。クラスの名前を表示するだけです。私は多くの方法を試しました。例:これ:

ListBox lstBox = new ListBox();
CarListView view = new CarListView();
view.DataCollection.Add(new CarView("John", "Ferrari", "/Images/car_missing.jpg"));
lstBox.ItemsSource = view.DataCollection;
lstBox.Style = Application.Current.Resources["ListBoxItemStyle1"] as Style;
stackPanel.Children.Insert(0, lstBox);

スタイルとクラスは大丈夫です。これをコードではなくxamlで追加している場合、ページが読み込まれるとすべてが正常に表示されます。リソースのスタイルを使用してコードから新しいリストボックスを追加するにはどうすればよいですか?

4

2 に答える 2

0

コードですべてを作成し、サンプルのようにページリソースからスタイルをロードするサンプルを作成しました

XAML:

<phone:PhoneApplicationPage.Resources>
    <Style  x:Key="myLBStyle"
            TargetType="ListBoxItem">
        <Setter Property="Background"
                Value="Khaki" />
        <Setter Property="Foreground"
                Value="DarkSlateGray" />
        <Setter Property="Margin"
                Value="5" />
        <Setter Property="FontStyle"
                Value="Italic" />
        <Setter Property="FontSize"
                Value="14" />
        <Setter Property="BorderBrush"
                Value="DarkGray" />
    </Style>
</phone:PhoneApplicationPage.Resources>

次に、ユーザーがボタンをクリックしたときにリストボックスを追加する空のスタックパネルがあります

コード ビハインド ファイル:

    private void Test_Click_1(object sender, System.Windows.RoutedEventArgs e)
    {
        ListBox lstBox = new ListBox();
        List<string> data = new List<string>() { "one", "two", "three" };
        lstBox.ItemsSource = data;
        lstBox.ItemContainerStyle = this.Resources["myLBStyle"] as Style;
        MyStackPanel.Children.Insert(0, lstBox);
    }
于 2013-02-19T13:33:38.537 に答える
0

Listboxitems には ItemContainerStyle を使用する必要があります。Style は ListBox コントロール用です。

    <Grid x:Name="LayoutRoot" Background="White">
    <Grid.Resources>
        <Style  x:Key="myLBStyle" TargetType="ListBoxItem">
            <Setter Property="Background" Value="Khaki" />
            <Setter Property="Foreground" Value="DarkSlateGray" />
            <Setter Property="Margin" Value="5" />
            <Setter Property="FontStyle" Value="Italic" />
            <Setter Property="FontSize" Value="14" />
            <Setter Property="BorderBrush" Value="DarkGray" />
        </Style>
    </Grid.Resources>
        <ListBox Height="184"  ItemContainerStyle="{StaticResource myLBStyle}"  HorizontalAlignment="Left" 
             Margin="23,24,0,0" Name="listBox1" VerticalAlignment="Top" Width="204" >
        <ListBox.Items>
            <ListBoxItem Content="Item1" />
            <ListBoxItem Content="Item2" />
            <ListBoxItem Content="Item3" />
        </ListBox.Items>
    </ListBox>
</Grid>

またはコードで:

listBox1.ItemContainerStyle = Application.Current.Resources["myLBStyle"] as Style;
于 2013-02-18T21:12:42.813 に答える