簡體   English   中英

幫助 WPF 數據綁定

[英]Help with WPF data binding

我是 WPF 的新手,我正試圖弄清楚數據綁定是如何工作的,但我運氣不佳。

我試圖從一些簡單的事情開始——將文本框的內容綁定到我程序中的字符串變量。

我閱讀了很多關於數據綁定、XML 命名空間、標記擴展、資源、依賴屬性等等的 MSDN 文檔頁面,但我仍然無法讓它工作。

這是我的 MainWindow.xaml:

<Window x:Class="WpfTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:c="clr-namespace:WpfTest"
        Title="MainWindow">
    <Grid>
        <Grid.Resources>
            <c:Foo x:Key="MyFoo"/>
        </Grid.Resources>
        <TextBox Width="100" Height="28"
                 Text="{Binding Source=MyFoo,
                                Path=BarProperty,
                                Mode=TwoWay,
                                UpdateSourceTrigger=PropertyChanged}"/>
    </Grid>
</Window>

還有我的 MainWindow.xaml.cs:

namespace WpfTest
{
    public class Foo : DependencyObject
    {
        public static readonly DependencyProperty BarProperty = DependencyProperty.Register("Bar", typeof(String), typeof(Foo));

        public String Bar
        {
            get { return (String)GetValue(BarProperty); }
            set { SetValue(BarProperty, value); }
        }
    }

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            MyFoo = new Foo { Bar = "hello" };
        }

        public Foo MyFoo { get; set; }
    }
}

我希望程序啟動時文本框顯示“你好”,但它是空的。

有人可以告訴我我做錯了什么嗎?

您需要將 Window 的DataContext設置為自身。

public MainWindow()
{
    InitializeComponent();
    this.DataContext = this;
    MyFoo = new Foo { Bar = "hello" };
}

這告訴 WPF 在 class 中查找綁定。

每個控件都可以設置一個DataContext ,上面寫着“當我綁定時,我想綁定到這個特定實例上的一個屬性......這是繼承的,所以如果你將 MainWindow 的DataContext設置為它自己,那么MainWindow內的所有控件MainWindow將綁定到MainWindow上的屬性。

您需要指定來源。 任何一個:

給 window 起一個名字,比如 Name="mywin",用 ElementName="myWin" 改變你的綁定

或者設置 window DataContext 像:

DataContext="{Binding ElementName="myWin"} - 如果您不希望我無法發布未經測試的名稱,您也可以使用 RelativeSource - 正如您還注意到的那樣,綁定往往需要測試:)

這可能會有所幫助:

http://blogs.msdn.com/b/wpfsdk/archive/2006/10/19/wpf-basic-data-binding-faq.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM