基本上我在用户控件中有一组单选按钮。我希望这些与它们的“对应物”相同,它们保存在ViewModel的列表中。
目前,我必须将每个属性的几乎所有属性绑定到ViewModel集合中的适用索引。 E.g:
<RadioButton x:Name="btnStatus2" IsChecked="{Binding Path=radioButtonsIsChecked, Mode=TwoWay}"
Content="{Binding Path=StatusButtonList[1].Content, Mode=TwoWay}"
Tag="{Binding Path=StatusButtonList[1].Tag, Mode=TwoWay}"
Visibility="{Binding Path=StatusButtonList[1].Visibility, Mode=OneWay}"
GroupName="statusBtns" Grid.Column="1" Grid.Row="0" >
正如你所看到的,如果我的控件中有10个单选按钮,View将会非常大。我对WPF很新,任何建议都将不胜感激。谢谢!
答案 0 :(得分:1)
使用ItemsControl并将ItemsSource属性设置为viewmodel中的集合。
<ItemsControl ItemsSource="{Binding Path=RadioButtons}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton IsChecked="{Binding Path=IsRadioButtonChecked}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
WPF中还有一些特殊的ItemsControl派生类型,它们提供附加功能(滚动,选定项目等)。 ListView,ListBox,ComboBox,DataGrid,TreeView等都是您可以在这里使用的ItemsControls