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 设置的动态绑定?_Wpf_Xaml_Reflection_Binding_Settings - Fatal编程技术网

Wpf 设置的动态绑定?

Wpf 设置的动态绑定?,wpf,xaml,reflection,binding,settings,Wpf,Xaml,Reflection,Binding,Settings,我面临一个问题,我有一个应用程序,其中有几个设置的文件,但有完全相同的字段 样本: Profil1.1设置 Profil2.0设置 Profil3.0设置 我想在我的设置窗口XAML中做的是动态更改每个概要文件的绑定源 目前,我的XAML绑定如下所示: SelectedValue="{Binding Source={x:Static Local:Properties.Profil1.Default}, Path=CurrentProfil, Mode=TwoWay, UpdateSource

我面临一个问题,我有一个应用程序,其中有几个设置的文件,但有完全相同的字段

样本:

  • Profil1.1设置
  • Profil2.0设置
  • Profil3.0设置
我想在我的设置窗口XAML中做的是动态更改每个概要文件的绑定源

目前,我的XAML绑定如下所示:

SelectedValue="{Binding Source={x:Static Local:Properties.Profil1.Default}, Path=CurrentProfil, Mode=TwoWay, UpdateSourceTrigger=Explicit}"
我的问题是如何用“Profil2”替换“Profil1”,而不通过代码隐藏为每个控件逐个重新创建所有绑定?是否可以在XAML绑定源中使用某种反射变量,而不是简单地使用Profil1类型或Profil2类型更改该变量的类型

有人能帮我吗


提前感谢。

您要做的是将设置窗口的DataContext设置为适当的配置文件。您可以按照自己的意愿进行操作,但这样做后,所有绑定都将指向该对象。要使绑定像现在一样工作,请执行以下操作:

<Window x:Class="MyNamespace.MyWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:Local="clr-namespace:MyNamespace"
        DataContext="{Binding Source={x:Static Local:Properties.Profil1.Default}}">

    ...

    <ComboBox SelectedValue="{Binding Path=CurrentProfil, Mode=TwoWay, UpdateSourceTrigger=Explicit}" />

...

我得到了一些线索,通过使用类型“dynamic”,我可以为动态变量分配不同的profile类型,并从中检索设置。这在代码中是可行的,但我不知道如何使它与XAML绑定一起工作。如果我试图在绑定源代码中绑定一个动态类型变量,编译器在构建时会抛出错误。我要到星期一才开始工作,但是的,这看起来是解决方案。我所要做的就是通过代码将窗口的DataContext更改为正确的配置文件,这样就完成了。这比使用动态类型对象和绑定容易得多。非常感谢。