wpf - 一次定义源并多次使用它

标签 wpf xaml

目前我正在使用下面的代码将 TextBlock 绑定(bind)到 Application 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>

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

简而言之,我想要代码压缩。我的意思是我希望我的代码易于维护和减少。

最佳答案

试试这个

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

>编辑

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

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

关于wpf - 一次定义源并多次使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844639/

相关文章:

.net - 在 WPF 中将像素转换为 CM

wpf - 将按钮单击事件上的WPF上下文菜单更改为MVVM

wpf - 如何使用 AvalonDock 选择选项卡

c# - 如何将字符串转换为颜色?对于 Windows Phone C#

c# - 为列表框中的每个项目加载不同的数据模板

silverlight - 如何将 ResourceDictionary (Styles.xaml) 中 Silverlight ListItem DataTemplate 中的按钮与处理程序连接起来?

c# - TreeView SelectedItem 行为 - 双向绑定(bind)在一个方向上不起作用

c# - WPF 二维数组绑定(bind)和上下文菜单

c# - Xamarin Android TextColor 属性在不同设备上表现异常

c# - 自定义组合框样式