WPF SettingsDialog使用ListView的SelectedItem和ContentPresenter

时间:2013-12-18 20:03:51

标签: c# wpf xaml data-binding

我以为我做了一些相当精彩的东西,但它不起作用(还有!)。

我试图摆脱SettingsDialog背后的所有代码,用户可以选择SettingsGroup,因此可以在ListView右侧显示(a ContentPresenter与Visual Studio有类似的设置对话框。

tipped使用SettingsGroup,我做了,但之后意识到自卸车可能只是依靠XAML来完成工作。

这是我到目前为止所得到的。

在XAML中声明 <Grid.Resources> <w:DefinePathsUserControl x:Key="DefinePathSettingsGroup"></w:DefinePathsUserControl> <w:HideShowTvShowsUserControl x:Key="HideShowTvShowsSettingsGroup"></w:HideShowTvShowsUserControl> </Grid.Resources>

SettingsGroup

添加左侧ListView选择器(简单的 <ListView x:Name="SettingsGroupSelector" Grid.Row="0" Grid.Column="0"> <ListViewItem x:Name="PathSetting" Tag="{StaticResource DefinePathSettings}" Content="Path"/> <ListViewItem x:Name="HideShowTvShowsSetting" Tag="{StaticResource HideShowTvShowsSettings}" Content="Hide/Show TV Shows"/> </ListView> ):

ContentPresenter

然后我想我可以简单地将ListView绑定到 <ContentPresenter x:Name="SettingsContentPanel" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Content="{Binding Source=SettingsGroupSelector, Path=SelectedItem.Tag}" /> 中所选项目的标记,例如:

ContentPresenter

不幸的是,我的{{1}}中没有显示任何内容。我也没有在输出窗口中出现任何错误。

谁可以帮助我?

1 个答案:

答案 0 :(得分:1)

更改

  <ContentPresenter 
    x:Name="SettingsContentPanel" 
    Grid.Row="0" 
    Grid.Column="2" 
    Grid.ColumnSpan="2" 
    Content="{Binding Source=SettingsGroupSelector, Path=SelectedItem.Tag}" />

到这个

  <ContentPresenter 
    x:Name="SettingsContentPanel" 
    Grid.Row="0" 
    Grid.Column="2" 
    Grid.ColumnSpan="2" 
    Content="{Binding ElementName=SettingsGroupSelector, Path=SelectedItem.Tag}" />

有关specifying the Binding Source

的更多信息