通过正确的控制自动表示绑定对象

时间:2014-01-09 22:20:29

标签: c# wpf xaml data-binding mvvm

自己进入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

0 个答案:

没有答案