2017-11-13 40 views
0

問題が発生しました。リストボックスへのバインドを使用してコードをxamlにバインドするプロジェクトを作成しました。しかし、それは私の将来のコードでいくつかの問題を作成しました - 私は自分のフォームにボタンを追加するが、私はいくつかのエラーが発生します。xamlでバインドされたリストボックスの外にボタンを追加する

'ItemsSourceを使用する前にアイテムコレクションを空にする必要があります。'

このエラーは、バインド可能なリストボックスの外に何かをバインドしようとすると発生します。

「VisualTree」プロパティは1回しか設定できません。

このエラーは、リストボックスの下にボタンを追加しようとすると発生します。

私はこれをどのように修正することができますか?

マイコード:

<ListBox x:Name="ItemsControl1"> 
    <ListBox.ItemsPanel> 

     <ItemsPanelTemplate> 

      <UniformGrid Columns="5"> 
      </UniformGrid> 

     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border BorderBrush="Black" BorderThickness="2" Width="Auto" Height="Auto"> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding Number}"/> 
        <Image Source="{Binding Source}" Margin="0,0,5,0"/> 
       </StackPanel> 
      </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

望ましい結果がリストボックスの下のボタンになります。

+0

だけで、:あなたはWindow年代/ UserControlContentプロパティを2回設定することはできませんので、 あなたは、いくつかのレイアウトコンテナー(GridStackPanelなど)の内部ですべてのこのようなものを配置する必要がありますそれの下に "矛盾して聞こえる。 ListBox以外のButton *を共通のPanelに入れます。 StackPanelまたはGridです。 – Clemens

+0

私はあなたが何をしようとしているのかぼんやりした一般的な考え方を持っていますが、ボタンを正確に表示する場所とリストボックスの外側にない理由を明確にしてください。 – grek40

+0

@クレメンスハハ、ありがとう私は間違いを修正した。 「ボタンをListBoxのほかに、共通のパネル、たとえばStackPanelまたはGridに配置する」これは、ItemsSourceを使用する前に 'Itemsコレクションが空である必要があります。'というメッセージが表示されたときです。エラー – Noctii

答えて

0

ボタンの下にListBoxの宣言を追加する必要があります。 ビジュアルツリーにバインディングが設定されているため、手動で変更することはできないため、直面している例外がスローされます。リストボックス内の「

<StackPanel> 
    <ListBox x:Name="ItemsControl1"> 
     <ListBox.ItemsPanel> 

      <ItemsPanelTemplate> 

       <UniformGrid Columns="5"> 
       </UniformGrid> 

      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <Border BorderBrush="Black" BorderThickness="2" Width="Auto" Height="Auto"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Number}"/> 
         <Image Source="{Binding Source}" Margin="0,0,5,0"/> 
        </StackPanel> 
       </Border> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
    <Button/> 
</StackPanel> 
+0

プロパティ 'Content'が複数回設定されています。これは私がリストボックスの下に私のボタンを宣言するときに得るエラーです。 – Noctii

+0

リストボックスをいくつかのコンテナ内に配置する(例: 'StackPanel'、' Grid') – Shcherban

+0

ありがとう!リストボックスの周りにグリッドを追加し、stackpanelのリストの下に を追加しました。 – Noctii

関連する問題