0

C#コードビハインドでListView itemSourceを設定するにはどうすればよいですか? Hun セクション内の要素には、名前ではアクセスできません。

<Hub x:Name="RootHub" SectionHeaderClick="Hub_SectionHeaderClick">
        <Hub.Header>
            <!-- Back button and page title -->
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="80"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Button  x:Name="backButton" Style="{StaticResource NavigationBackButtonNormalStyle}"
                    Margin="0,0,39,0" 
                    VerticalAlignment="Top"
                    Command="{Binding NavigationHelper.GoBackCommand, ElementName=pageRoot}"
                    AutomationProperties.Name="Back"
                    AutomationProperties.AutomationId="BackButton"
                    AutomationProperties.ItemType="Navigation Button"/>
                <TextBlock x:Name="pageTitle" Text="{StaticResource AppName}" Style="{StaticResource HeaderTextBlockStyle}" Grid.Column="1" 
                    VerticalAlignment="Top" IsHitTestVisible="false" TextWrapping="NoWrap" />
            </Grid>
        </Hub.Header>
        <HubSection Width="500" x:Name="OperationSection" Header="Operation">
            <DataTemplate>
                <Grid Height="535">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" MinHeight="92" />
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <SearchBox Margin="0,0,50,394"/>
                    <Image Source="Images/plus.png" Margin="375,6,4,394"/>
                    <ListView x:Name="OperationListView" ItemsSource="{Binding Operation}" HorizontalAlignment="Left" Height="453" VerticalAlignment="Top" Width="410" Margin="6,72,0,0" Grid.RowSpan="2">
                        <!--<ListView.ItemTemplate>
                            <DataTemplate>
                                <TextBlock x:Name="DataItem" Text="{Binding opId}" />

                            </DataTemplate>
                        </ListView.ItemTemplate>-->
                        <ListBoxItem>
                        <StackPanel Orientation="Vertical">
                            <TextBlock Text="OP : 0001" Width="auto" Height="30" FontSize="20"></TextBlock>
                                <TextBlock Text="Replace Transformer" Width="auto" Height="30" FontSize="20"></TextBlock>
                        </StackPanel>
                        </ListBoxItem>
                        <ListBoxItem>
                        <StackPanel Orientation="Vertical">
                                <TextBlock Text="OP : 0002" Width="auto" Height="30" FontSize="20"></TextBlock>
                                <TextBlock Text="Install New Pole" Width="auto" Height="30" FontSize="20"></TextBlock>
                        </StackPanel>
                        </ListBoxItem>
                        <ListViewItem>
                        <StackPanel Orientation="Vertical">
                                <TextBlock Text="OP : 0003" Width="auto" Height="30" FontSize="20"></TextBlock>
                                <TextBlock Text="Check Equipments" Width="auto" Height="30" FontSize="20"></TextBlock>
                        </StackPanel>
                        </ListViewItem>
                    </ListView>
                </Grid>
            </DataTemplate>
        </HubSection>
        <HubSection Width="500" x:Name="ComponentSection" Header="Component">
            <DataTemplate>
                <Grid Height="535">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" MinHeight="92" />
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <SearchBox Margin="0,0,50,394"/>
                    <Image Source="Images/plus.png" Margin="375,6,4,394"/>
                    <ListView x:Name="OperationListView" ItemsSource="{Binding Operation}" HorizontalAlignment="Left" Height="453" VerticalAlignment="Top" Width="410" Margin="6,72,0,0" Grid.RowSpan="2">
                    <ListBoxItem>
                            <StackPanel Orientation="Vertical">
                                <TextBlock Text="COM : 0001" Width="auto" Height="30" FontSize="20"/>
                                <TextBlock Text="Transformer" Width="auto" Height="30" FontSize="20"/>
                            </StackPanel>
                        </ListBoxItem>
                        <ListBoxItem>
                            <StackPanel Orientation="Vertical">
                                <TextBlock Text="COM : 0002" Width="auto" Height="30" FontSize="20"/>
                                <TextBlock Text="Pole" Width="auto" Height="30" FontSize="20"/>
                            </StackPanel>
                        </ListBoxItem>
                        <ListViewItem>
                            <StackPanel Orientation="Vertical">
                                <TextBlock Text="COM : 0003" Width="auto" Height="30" FontSize="20"/>
                                <TextBlock Text="Grid" Width="auto" Height="30" FontSize="20"/>
                            </StackPanel>
                        </ListViewItem>
                    </ListView>
                </Grid>
            </DataTemplate>
        </HubSection>
        <HubSection Width="500" x:Name="EquipmentSection" Header="Equipment">
            <DataTemplate>
                <Grid Height="535">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="Auto" MinHeight="92" />
                        <RowDefinition />
                    </Grid.RowDefinitions>
                    <SearchBox Margin="0,0,50,394"/>
                    <Image Source="Images/plus.png" Margin="375,6,4,394"/>
                    <ListView x:Name="OperationListView" ItemsSource="{Binding Operation}" HorizontalAlignment="Left" Height="453" VerticalAlignment="Top" Width="410" Margin="6,72,0,0" Grid.RowSpan="2">
                      <ListBoxItem>
                            <StackPanel Orientation="Vertical">
                                <TextBlock Text="EQ : 0001" Width="auto" Height="30" FontSize="20"/>
                                <TextBlock Text="Transformer" Width="auto" Height="30" FontSize="20"/>
                            </StackPanel>
                        </ListBoxItem>
                        <ListBoxItem>
                            <StackPanel Orientation="Vertical">
                                <TextBlock Text="EQ : 0002" Width="auto" Height="30" FontSize="20"/>
                                <TextBlock Text="Pole" Width="auto" Height="30" FontSize="20"/>
                            </StackPanel>
                        </ListBoxItem>
                        <ListViewItem>
                            <StackPanel Orientation="Vertical">
                                <TextBlock Text="EQ : 0003" Width="auto" Height="30" FontSize="20"/>
                                <TextBlock Text="Wire" Width="auto" Height="30" FontSize="20"/>
                            </StackPanel>
                        </ListViewItem>
                    </ListView>
                </Grid>
            </DataTemplate>
        </HubSection>
    </Hub>

ここでは、OperationListView にリスト項目をハードコーディングしています。しかし、C# でアイテムを動的にロードしたいです。どうすればこれを解決できますか? 前もって感謝します。

4

1 に答える 1

1

質問に関するいくつかの問題は、ListView が Operation というプロパティにバインドされていることです。個々の ListView 項目を削除すると、データが表示されます。個々の項目を表示するには、ListView.ItemTemplate も必要です。

ここではデータ バインディングを使用しますが、すべてのリストの同じプロパティにもバインドしているため、各 ListView に異なるプロパティにバインドする必要があると想定しています。そうしないと、各 HubSection に同じ項目が含まれます。

データ バインディングを使用せず、コード ビハインドでアイテムをロードしたくない場合は、ListView の Loaded イベントを使用できます。

<ListView x:Name="OperationListView" Loaded="OperationsLoaded">
</ListView>

次に、コードビハインドで:

private void OperationsLoaded(object sender, RoutedEventArgs e)
{
  var listView = (ListView)sender;
  listView.ItemsSource = youritems;
}

それが役立つことを願っています。

于 2014-01-04T12:37:44.050 に答える