【发布时间】:2018-04-12 14:16:42
【问题描述】:
我想在 UWP 中实现一个GridView,每个项目包含一个TextBlock、Checkbox 和两个ComboBox。
我现在得到的是GridViewItem 的类名。
我认为这可以通过DataTemplate 解决?
Xaml 文件:
<Page.Resources>
<DataTemplate x:Name="CameraSettingsGridViewTemplate" x:DataType="local:CameraSetting">
<GridViewItem>
<StackPanel>
<TextBlock Text="{x:Bind Property}"/>
<CheckBox/>
<ComboBox ItemsSource="{x:Bind Value1}"/>
<ComboBox ItemsSource="{x:Bind Value2}"/>
</StackPanel>
</GridViewItem>
</DataTemplate>
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<GridView Name="CameraSettings" HorizontalAlignment="Left" VerticalAlignment="Top" ItemsSource="{x:Bind CameraSettingsList}"></GridView>
</Grid>
DataTemplate 是解决问题的尝试。
CS 文件:
public sealed partial class CameraSettingsPage : Page {
private ObservableCollection<CameraSetting> cameraSettingsList = new ObservableCollection<CameraSetting>();
public ObservableCollection<CameraSetting> CameraSettingsList { get { return this.cameraSettingsList; } }
public CameraSettingsPage() {
this.InitializeComponent();
this.cameraSettingsList = new ObservableCollection<CameraSetting>() {
new CameraSetting() {
Property = "prop1",
Auto = new CheckBox(),
Value1 = new ComboBox() { ItemsSource = new ObservableCollection<string>() { "1", "2" } },
Value2 = new ComboBox() { ItemsSource = new ObservableCollection<string>() { "a", "b" } }
}
};
}
private void Page_Loaded(object sender, RoutedEventArgs e) {
}
}
public class CameraSetting {
public string Property { get; set; }
public CheckBox Auto { get; set; }
public ComboBox Value1 { get; set; }
public ComboBox Value2 { get; set; }
}
在构造函数中,我在ObservableCollection 中创建了一个示例GridViewItem,并将其作为ItemSource 用于GridView。
【问题讨论】:
标签: c# xaml gridview uwp datatemplate