Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何从xaml访问MyProject.MySettings.Default.SomeSetting?_Wpf_Vb.net_Application Settings_My.settings - Fatal编程技术网

Wpf 如何从xaml访问MyProject.MySettings.Default.SomeSetting?

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}}"

我已在项目设置中定义了StringCollection。 我想使用组合框中的值

有没有一种方法可以方便地访问它

我试过:

<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中还是在其他地方?它们是,但我不会从那里检索它们。