0

在后面的代码中我们设置了窗口背景的图像路径,有没有办法在xaml上获取这个值并用它来设置背景图像

4

2 回答 2

2

虽然我没有显示背景图像,但以下绑定仍然对您的情况有效:

XAML

<TextBox DataContext="{Binding RelativeSource={RelativeSource AncestorLevel=1,AncestorType=Window}}" 
 Text="{Binding MyProperty}" Width="200" Height="50"/>

C#

public partial class MainWindow : Window
    {
        public string MyProperty { get; set; }

        public MainWindow()
        {
            InitializeComponent();
            MyProperty = "Sample";
        }
    }

希望这对您有所帮助!

于 2012-06-28T07:07:57.730 回答
2

在最好的情况下,后面的代码是空的,或者只是 InitializeComponent 在那里。

因此,我将重点介绍一种实现方式,让未来的变化变得非常容易!

您可以轻松地为您的 Window 设置 DataContext(例如在代码隐藏中)。

从这个 DataContext (当这个路径改变时它应该实现 INotifyPropertyChanged )你可以很容易地绑定到你想要的任何东西。

这是一个小例子:

// ViewModel class containing ImagePath

public class WindowBackgroundViewModel : INotifyPropertyChanged
{
    public string ImagePath { get; set; }
}


// in Codebehind
public WindowBackgroundViewModel ViewModel { get; set; }

// in Constructor
public myWindow()
{
    this.ViewModel = new WindowBackgroundViewModel();
    this.ViewModel.ImagePath = @"C:\myBackground.png";

    this.DataContext = this.ViewModel;
}


// in XAML
<...  ImageBackground="{Binding Path=ImagePath}"
于 2012-06-28T07:10:18.840 回答