【发布时间】:2015-02-20 20:29:27
【问题描述】:
我正在构建一个 WPF 应用程序,其中在 app.config 文件中加载了一堆连接字符串。我要做的是让 WPF 窗口的组合框显示连接字符串的名称,而不必将它们添加到应用程序设置中。这可能吗?
在 MainWindow.xaml 中:
<ComboBox Grid.Row="0" Grid.Column="1"
Name="Servers"
ItemsSource="{Binding ?app.config?}" />
在 App.config 中:
<connectionStrings>
<add name="Prod" connectionString="Data source=..." />
<add name="Test" connectionString="Data source=..."/>
</connectionStrings>
编辑:
这是我使用的最后一个过程:
在我的窗口标签中:
xmlns:m="clr-namespace:SqlWindow"
<Window.DataContext>
<m:MainWindowViewModel />
</Window.DataContext>
然后,在主窗口 XAML 中,我有:
<ComboBox Grid.Row="0" Grid.Column="1" Name="ServersComboBox"
ItemsSource="{Binding ConnectionStrings}"
DisplayMemberPath="Name"
SelectedIndex="0" />
在单独的课程中,我有:
public class MainWindowViewModel {
public IEnumerable<ConnectionStringSettings> ConnectionStrings {
get {
foreach (ConnectionStringSettings cn in ConfigurationManager.ConnectionStrings) {
yield return cn;
}
}
}
}
所有这一切都让我到达了我需要去的地方。
【问题讨论】:
-
那么您是否建议将连接字符串存储在数据库中并以这种方式检索它们..?将它们存储在 app.config 文件中有什么问题..?您也可以将它们存储在 Setting.Settings 中,但您仍然需要手动输入值。您可以创建一个 List
并将值添加到列表中,然后将 ComboBox 绑定到该 List 例如有几种方法可以解决这个问题 -
不,我要把它们放在 app.config 中。我正在尝试将组合框的 itemssource 绑定到连接字符串的 name 属性。所以从上面的例子来看,组合框的项目应该是“Prod”和“Text”。
-
根据我之前的建议试试看这里stackoverflow.com/questions/845030/…
-
我知道我可以通过应用程序设置来做到这一点。这是我试图避免的方法,因为那样我就必须在 app.config 和应用程序设置中加载连接字符串 namnes。我正在努力避免重复劳动。
标签: c# wpf xaml data-binding app-config