自己进入WPF和MVVM,我正在努力做尽可能多的动态(并且可行)。
例如,我现在正在尝试创建一个设置页面,它通过绑定到ViewModel中的属性列出了我在Properties.Settings.Default中拥有的所有设置。
现在只要只有字符串就可以正常工作,但是我希望有相应的WPF控件(分别是NumericUpDown和Image)表示的其他设置(例如数字或图像)。
我知道这可能是不可能的,只是我对WPF的功能过于兴奋但后来我想......实际上为什么不可能呢?
编辑:关于评论,我实际上没有尝试实现这种行为,但是我在这里有一个动态的属性列表:
<TabControl Style="{StaticResource MyMetroTabControl}" Background="{DynamicResource AccentColorBrush}" TabStripPlacement="Left" MinWidth="{Binding RelativeSource={RelativeSource AncestorType=Controls:MetroWindow}, Path=SettingsTabControlMinWidth}" x:Name="SettingsTabControl" Grid.Column="1">
<TabItem Style="{StaticResource MyMetroTabItem}" Background="{DynamicResource AccentColorBrush}" Header="Application Paths" MinWidth="200">
<ItemsControl ItemsSource="{Binding Path=SettingsDictionary}" Grid.IsSharedSizeScope="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="SettingNameColumnWidth"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Path=Key}" FontSize="15" VerticalAlignment="Center" Grid.Column="0"/>
<TextBox Text="{Binding Path=Value}" Grid.Column="1" Margin="5"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</TabItem>
<TabItem Header="Test" Style="{StaticResource MyMetroTabItem}" Background="{DynamicResource AccentColorBrush}">
</TabItem>
其中SettingsDictionary基本上只是一个属性生成的Dictionary,其设置属性名称为Dictionary Key,设置值为Dictionary Value。 实际上我对这个解决方案还不是很满意,因为属性名称没有正确格式化(缺少空格等)
此致 Xaser