在XAML文件中引用类

时间:2016-02-25 12:27:22

标签: c# xaml

作为初学者,我有一个初学者的问题。这是关于一个名为黑白棋(奥赛罗)的小游戏。 我想将名为Stone的类与我的XAML文件绑定。我打算使用类的属性来更改省略号的布局。不确定在.XAML文件中或在运行时在.cs文件中构建64个省略号是否更好。

我很欣赏这个小项目的战略帮助。我在XAML中阅读了很多介绍,但是找不到一个很好的例子......

namespace Reversi
{
    class Stone
    {
        private static int _CountStones;
        public static int CountStones
        {
            get { return _CountStones; }
        }

    private Boolean _Color;
    public Boolean Color
    {
        get { return _Color; }
        set { _Color = value; }
    }
[....]

我只是想弄清楚如何在XAML文件中绑定这些属性。

这是我到目前为止所做的:

xmlns:sto="clr-namespace:Reversi"

现在我想做那样的事情:

  <Ellipse Name="{Binding ElementName=ID???}" Fill="{Binding Path:Color}" Grid.Row="2" Grid.Column="2"></Ellipse>

我知道Fill属性是Brush类型,我的Color属性是布尔值...稍后会构建一个类型转换器但是我知道它会描述我的问题。

如果您需要任何进一步的信息,请告诉我,我希望这个解释不会太模糊。

干杯

1 个答案:

答案 0 :(得分:2)

首先,您必须了解WPF中的DataBiding。

为你的例子。它只是代码的一部分。它展示了如何在WPF中绑定数据。

首先,您必须像这样实现INotifyPropertyChanged类的Stone接口。

public class Stone : INotifyPropertyChanged
    {
        private static int _CountStones;
        public static int CountStones
        {
            get { return _CountStones; }
        }

        private Boolean _Color;
        public Boolean Color
        {
            get { return _Color; }
            set {
                if (value == _Color)
                    return;

                _Color = value;

                OnPropertyChanged("Color");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

下一步必须使用xaml视图绑定Stone类。

您的View类中的代码

构造函数

    public YourViewClassName()
    {
       this.DataSource  = new Stone();
    }

然后你可以这样做

<Ellipse Fill="{Binding Color}" Grid.Row="2" Grid.Column="2"></Ellipse>

颜色将与Stone类属性绑定

一些信息:

http://blog.scottlogic.com/2012/04/05/everything-you-wanted-to-know-about-databinding-in-wpf-silverlight-and-wp7-part-one.html

http://blog.scottlogic.com/2012/04/20/everything-you-wanted-to-know-about-databinding-in-wpf-silverlight-and-wp7-part-two.html

http://www.wpf-tutorial.com/data-binding/introduction/