WPF ItemsControlデータバインディング-追加の初期コントロールの追加
-
03-07-2019 - |
質問
最初に表示される新しいグループを追加するためのラベルとボタンを使用して、グループのリストを表示するデータバインドアイテムコントロール用の次のXAMLがあります:
<WrapPanel Orientation="Horizontal">
<Label Content="Groups" />
<Button x:Name="btnGroupAdd" Click="btnGroupAdd_Click" Content="+" />
<ItemsControl ItemsSource="{Binding}" x:Name="_groupList" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal">
</WrapPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Padding="3" BorderThickness="1">
<WrapPanel>
<CheckBox x:Name="_groupEnabled" Click="GroupEnabled_Click" IsChecked="{Binding Path=Checked}">
<TextBlock x:Name="_groupName" Text="{Binding Path=Group.Name}" ></TextBlock>
</CheckBox>
<Button x:Name="_deleteGroup" FontStyle="Normal" Click="DeleteGroup_Click" />
</WrapPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
少数のグループでは、すべてが1行に表示されます。
グループ+ Group1 Group2 Group3
さらにグループを追加すると、アイテムを含む折り返しパネルが折り返されますが、新しいグループを追加するための最初のラベルとボタンは独自の行にあり、データバインドされたグループは次の行から始まります。
グループ+
Group1 Group2 Group3 Group4
Group5
ラップパネルがネストされているので、なぜこれが起こっているのか理解できます。私の質問は、内側の折り返しパネルに最初のラベルとボタンを含めて、それらが単独で行にならないようにする方法です。
グループ+グループ1グループ2グループ3
Group4 Group5
解決
これに満足している場合:
グループ+グループ1グループ2グループ3
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Group4 Group5
次に、外側の Grid
と内側の WrapPanel
を使用することをお勧めします。それ以外の場合、オプションは次のとおりです。
- 他のコントロール(
Label
およびButton
)、またはバインドしているコレクション内のこれらのコントロールを再現するビューモデルを含めます。 - 独自の
Panel
を作成します。
所属していません StackOverflow