4

这是我的第一篇文章,所以看起来不是那么好,但我会尽力而为......

我已经在网上搜索了几个小时,这听起来可能很愚蠢,但我一直无法找到答案。

我有 Window 类,在 .cs 文件中我有一些属性,例如

public ImageSource Obal { get; set; }

然后在设计器中我添加了一些图像、按钮等。还设置了窗口的名称:Name="Somename"

我想知道如何访问该属性,例如,我可以为它设置一些图像的源属性,如下所示:

图片名称="Blah" 来源="Obal"

现在我知道我可以通过绑定设置 Source 值:

Source="{绑定元素名称=karta, 路径=Obal}"

但我必须每次都这样吗?无论如何,所有这些属性都来自 Window 类......而且我也在问,因为我想在 Image.Style 的 Storyboard 中更改image.Source ......而且不能在那里使用绑定......

我希望我很清楚,我提前感谢大家。

4

1 回答 1

2

要访问 XAML 文件中属性背后的代码,您需要执行 3 个步骤:

  1. 引用 xaml 文件中的命名空间,例如:

    xmlns:local="clr-namespace:AccessACodeBehindPropertyinXaml"
    
  2. 提供您在 Windows.Resources 标记中引用的命名空间的键。此键将允许访问您的 XAML 文件中引用的命名空间的任何类、属性,例如

    <Window.Resources>
            <local:ImageClass x:Key="imageClass"/>
    </Window.Resources>
    
  3. 现在您只需使用 Binding 类的 Source & Path 属性在 XAML 中绑定控件的属性,如下所示:

    <Label Content="{Binding Source={StaticResource imageClass}, Path=ImageName}" Name="label1" />
    

我编写了一个将类属性绑定到标签控件的示例应用程序。看一看

MainWindow.xaml.cs 文件:

namespace AccessACodeBehindPropertyinXaml
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();                       
        }
    }

    public class ImageClass
    {
        string m_ImageName;

        public ImageClass()
        {
            m_ImageName = "My Image Name";
        }
        public string ImageName
        {
            get
            {
                return m_ImageName;
            }
            set
            {
                m_ImageName = value;
            }
        }
    }
}

主窗口.xaml

<Window x:Class="AccessACodeBehindPropertyinXaml.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:AccessACodeBehindPropertyinXaml"
        Title="MainWindow" Height="350" Width="525" Name="ImageWindow">
    <Window.Resources>
        <local:ImageClass x:Key="imageClass"/>
    </Window.Resources>
    <Grid>
        <Label Content="{Binding Source={StaticResource imageClass}, Path=ImageName}" Height="28" HorizontalAlignment="Left" Margin="159,126,0,0" Name="label1" VerticalAlignment="Top" Width="109" />
    </Grid>
</Window>

如果您需要更多说明,请告诉我。

于 2012-12-16T07:02:42.770 回答