Wpf 如何从xaml访问MyProject.MySettings.Default.SomeSetting?
我已在项目设置中定义了StringCollection。 我想使用组合框中的值 有没有一种方法可以方便地访问它 我试过:Wpf 如何从xaml访问MyProject.MySettings.Default.SomeSetting?,wpf,vb.net,application-settings,my.settings,Wpf,Vb.net,Application Settings,My.settings,我已在项目设置中定义了StringCollection。 我想使用组合框中的值 有没有一种方法可以方便地访问它 我试过: <CollectionViewSource Source="{x:Static src:MySettings.Default.MyCollection}" /> <CollectionViewSource Source="{Binding Source={x:Static src:MySettings.Default.MyCollection}}"
<CollectionViewSource Source="{x:Static src:MySettings.Default.MyCollection}" />
<CollectionViewSource
Source="{Binding Source={x:Static src:MySettings.Default.MyCollection}}" />
****src**是本项目的xmlns*
它说:“找不到类型src:MySettings.Default”
问题是MySettings是一个提供默认属性的类,它是MySettings的线程安全实例,我真的希望从默认属性获取集合,而不是通过在上实例化一个新属性
有没有其他我不知道的方法,ObjectDataProvider可以访问静态对象
我想,也许我可以在App.xaml中创建一个返回MySettings.Default的全局资源,它是MySettings类的一个实例,然后访问它的所有属性,我会尝试一下,但我更喜欢简单的方法。我一直使用。关键是将源设置为
设置。默认设置和所需设置的路径如下:
<Window x:Class="SettingsBindSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:SettingsBindSample.Properties"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<CollectionViewSource x:Key="MyItems"
Source="{Binding MyCollection, Source={x:Static s:MySettings.Default}}" />
</Window.Resources>
<StackPanel>
<ComboBox ItemsSource="{Binding Source={StaticResource MyItems}}" />
</StackPanel>
</Window>
作为Joseph答案的扩展,还可以使用静态包装类通过{x:Static}
直接访问各个设置。这允许在绑定不起作用的情况下使用设置值-最明显的是动画或非依赖属性的属性
基本方法是:
public static class XamlSettings
{
public static MySettingsMember { get {return Properties.MySettings.Default.MySettingsMember; }}
}
然后在XAML中,沿着
的行,在包装器类所在的命名空间下引用它
作为本文的补充,试图直接公开默认值是行不通的,可能是因为它不是完全静态的“足够”——默认值上的属性是实例属性,而{x:static}
不喜欢。不过,您可能可以编写一个自定义标记扩展来获取实例属性
这对于基于资源的动画方法特别有用,因为严格来说,您不想绑定(这会带来各种可自由化的问题),但也不想让大量的单例50.0
s四处游荡(或者希望避免合并应用程序级资源字典的开销,我相信这不仅仅是在整个应用程序中实例化一次)。这些项目设置是在app.config中还是在其他地方?它们是,但我不会从那里检索它们。