访问xaml中属性后面的代码

时间:2012-12-16 04:13:02

标签: wpf

这是我的第一篇文章,所以它看起来并不那么好,但我会尽我所能......

我现在已经在网上搜索了几个小时了,这听起来可能很傻但是我找不到答案。

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

public ImageSource Obal { get; set; }

然后在设计师中添加了一些图像,按钮等。还设置了窗口的名称:名称=“Somename”

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

图片名称=“Blah”来源=“Obal”

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

Source =“{Binding ElementName = karta,Path = Obal}”

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

我希望我很清楚,我提前感谢你们。

1 个答案:

答案 0 :(得分:2)

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

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

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

    <Window.Resources>
            <local:ImageClass x:Key="imageClass"/>
    </Window.Resources>
    
  3. 现在您只需要使用Source&amp; amp;和XAML绑定控件的属性。 Binding类的路径属性如下:

    <Label Content="{Binding Source={StaticResource imageClass}, Path=ImageName}" Name="label1" />
    
  4. 我编写了一个示例应用程序,它将类属性绑定到标签控件。看看

    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;
                }
            }
        }
    }
    

    MainWindow.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>
    

    如果您需要进一步澄清,请告诉我。