2016-06-11 16 views
0

私はすでに1年間デルファイで作業していましたが、今はC#UWPを開発します。
は、私はすでにいくつかの作業を行っている、と私は私のXAMLで、私は10「パネル」を実行する必要が1000年lines..BECAUSEのように正確に同じ、唯一の自分の名前を変更し、例があることがわかります。
xamlでコードを繰り返さないようにするにはどうすればよいですか?

<StackPanel Name="Stack1"> 
    <TextBlock Name="Text1"/> 
    <TextBox Name="Box1" 
</StackPanel> 
<StackPanel Name="Stack2"> 
    <TextBlock Name="Text2"/> 
    <TextBox Name="Box2" 
</StackPanel> 

これは単なる例ですが、実際には私のコードはそれぞれ100行の 'StackPanel'を持っています。

..だからのみ1「のStackPanel」を実行する方法をtheresのと数行に
を使用してXAMLコード上のクラスか何かのように10回、それを使用するか、私はそれを10回書いて、1000行

+0

SOはn-in-1の質問を望んでいません(n> 1)。最初の質問は実際には非常に限られた有用性しかありません。どのくらい一般的に使用されているかに基づいてコントロールを選択しません。あなたは要件があり、最高のマッチを選ぶ。 2番目の質問は、提供された情報があれば答えられません。 – IInspectable

+0

@IInspectableこんにちは、最初の質問は「真偽」なので、別の質問を作成するのは無意味だと思ったのですが、ごめんなさい – GuiPetenuci

+0

最初の質問は別の質問の一部であるかスタンド孤独な質問。どのような一般的なコントロールがどれほど普及しているか、尋ねるのは意味をなさない。あなたの要件に合ったものを選んでください。要件が不明な場合は、図面ボードに戻ってください。 – IInspectable

答えて

1
を使用する必要があります

いつも良い古いユーザーコントロールを使うことができます。ここで私は例をご提供:

<UserControl 
    x:Class="App1.ReusableCode" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:App1" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    d:DesignHeight="300" 
    d:DesignWidth="400"> 

    <Grid VerticalAlignment="Center" HorizontalAlignment="Center"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="*" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <StackPanel Grid.Row="0"> 
      <TextBlock Text="SomeText" /> 
      <TextBlock Text="Some Text 2" /> 
     </StackPanel> 
     <StackPanel Name="stackPanel2" Grid.Row="1"> 
      <TextBlock Text="SomeText 3" /> 
      <TextBlock Text="Some Text 4" /> 
     </StackPanel> 
     <StackPanel Name="stackPanel3" Grid.Row="2"> 
      <TextBlock Text="SomeText 5" /> 
      <TextBlock Text="Some Text 6" /> 
     </StackPanel> 
     <StackPanel Name="stackPanel4" Grid.Row="3"> 
      <TextBlock Text="SomeText 7" /> 
      <TextBlock Text="Some Text 8" /> 
     </StackPanel> 
    </Grid> 
</UserControl> 

あなたはこのようなあなたのビューでそれを使用することができます。ユーザーコントロールは、あなたがこのようにそれをエクスポートする必要がフォルダ内にある場合

<Page 
    x:Class="App1.MainPage" 
    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:local="using:App1" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <local:ReusableCode x:Name="ucReusableCode" /> 
    </Grid> 
</Page> 

あなたのページのXAML内であり、このようにそれを呼び出すことができます
xmlns:usercontrol="using:App1.UserControlsFolder" 

<Page 
    x:Class="App1.MainPage" 
    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:local="using:App1" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:usercontrol="using:App1.UserControlsFolder" 
    mc:Ignorable="d"> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <usercontrol:ReusableCode x:Name="ucReusableCode" /> 
    </Grid> 
</Page> 

が、これは、あなたの質問に答える願っています。

+0

後で答えて申し訳ありませんが、今私は仕事で毎日C#を使用しています(私はデルファイを使用していました)と家庭、私はちょっと多くのことを知っています。ありがとう – GuiPetenuci

2

ItemsControl、またはItemsControlから派生したコントロールはListViewのようです。マイItemsControlListクラス

private ObservableCollection<ItemsControlList> itemscontrolCollection; 

public MainPage() 
{ 
    this.InitializeComponent(); 
    itemscontrolCollection = new ObservableCollection<ItemsControlList>(); 
} 

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    itemscontrolCollection.Clear(); 
    for (int i = 1; i <= 100; i++) 
    { 
     itemscontrolCollection.Add(new ItemsControlList { MyText = "Text" + i }); 
    } 
} 

:たとえば、ここに:背後

<ItemsControl ItemsSource="{x:Bind itemscontrolCollection}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding MyText}" /> 
       <TextBox /> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

コードあなたがここに各StackPanelTextBlockTextBoxに名前を設定する理由

public class ItemsControlList 
{ 
    public string MyText { get; set; } 
} 

私は、知りませんdata bindingを使用して、各コントロールの依存関係プロパティに値を設定できます。

ListView and GridView sampleを確認して、ListViewをUWPアプリで使用する方法を確認できます。 UI basics (XAML) sampleを参照して、シナリオに適したコントロールを見つけることもできます。

関連する問題