定义源一次并多次使用它

时间:2013-12-30 17:44:39

标签: wpf xaml

目前我使用以下代码绑定到TextBlockApplication Settings

<Grid DataSource="{Binding DataContext.CurrentPatient, RelativeSource={RelativeSource AncestorType={x:Type Page}}">
   ...
   ...
   ...
   <TextBlock Text="{Binding Source={StaticResource Settings}, Path=Default.Test}" />
   <TextBox Text="{Binding Source={StaticResource Settings}, Path=Default.CurrentValue}" />
   <TextBlock Text="{Binding Source={StaticResource Settings}, Path=Default.NormalValue}" />
   ...
   ...
   ...
</Grid>

现在我不想在所有文本块中输入Source={StaticResource Settings}

简而言之,我希望缩小代码。我的意思是我希望我的代码可以维护和减少。

2 个答案:

答案 0 :(得分:1)

试试这个

public class Mybinding : Binding
{
    //Load only once and use every time :)
    static object Settings = App.Current.Resources["Settings"];

    public Mybinding()
    {
        Source = Settings; 
    }
}

 <TextBlock Text="{local:Mybinding Path=Default.Test}" />

<强>&gt;编辑

<Application.Resources>
  <ResourceDictionary>
     <properties:Settings x:Key="Settings" />
  </ResourceDictionary>
 </Application.Resources>

local是Mybinding的命名空间。我没有测试过它。但希望这会给你一个想法。我期待“设置”在App.xaml或ResourceDictionary合并到App.xaml

答案 1 :(得分:1)

再添加一个网格并使用其DataContext

<Grid DataContext={Binding Source={StaticResource Settings}}>
   <TextBlock Text="{Binding Default.Test}" />
   <TextBox Text="{Binding Default.CurrentValue}" />
   <TextBlock Text="{Binding Default.NormalValue}" />
<Grid>