首页 新闻 会员 周边 捐助

XAML中,如何引用单例类的某个属性?

0
悬赏园豆:5 [已解决问题] 解决于 2013-09-28 12:36

AClass是一个被设计成单例模式的类,通过其静态、公用的 Instance属性获得该类的实例。该类有还一个公共非静态的String类型的属性 XPropety,假如要在XAML中将XPropety属性值赋给一个Textbox控件的Text属性,该怎么做呢?

seewold的主页 seewold | 初学一级 | 园豆:109
提问于:2013-09-28 00:02
< >
分享
最佳答案
0

需要在XAML中的Window中添加xmlns:local="clr-namespace:WpfApplication53",在TextBox的Text属性使用绑定{Binding Path=XPropety, Source={x:Static local:AClass.Instance}}

其中WpfApplication53是类AClass所在的命名空间

下面是示例代码

<Window x:Class="WpfApplication53.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:WpfApplication53"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBox Text="{Binding Path=XPropety, Source={x:Static local:AClass.Instance}}" />
    </Grid>
</Window>
using System.Windows;

namespace WpfApplication53
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            AClass.Instance.XPropety = "ABC";

            InitializeComponent();
        }
    }

    public class AClass
    {
        public static AClass Instance = new AClass();

        public string XPropety { get; set; }
    }
}
收获园豆:5
诶碧司 | 小虾三级 |园豆:1912 | 2013-09-28 11:10

您的回答很详细,谢谢!

我一开始老想着直接赋值的方式,没想到用绑定。这种场景用绑定应该是最简便了,直接赋值的XAML貌似没法实现。

seewold | 园豆:109 (初学一级) | 2013-09-28 12:35
其他回答(1)
0

1 给页面 指定数据源  是 AClass 

<UserControl.DataContext>
        <AClass/>
    </UserControl.DataContext>

 

    2<TextBlock  Text="{Binding XPropety}"/>

梁娜 | 园豆:39 (初学一级) | 2013-09-28 08:41

也谢谢您的关注和答复。

支持(0) 反对(0) seewold | 园豆:109 (初学一级) | 2013-09-28 12:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册