我是新來的WPF,我想弄清楚數據綁定是如何工作的,但我沒有太多的運氣。幫助WPF數據綁定
我想從簡單的東西開始 - 將文本框的內容綁定到我的程序中的字符串變量。
我讀了很多關於數據綁定,XML命名空間,標記擴展,資源,依賴項屬性和whatnot的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; }
}
}
我期望的文本框中顯示 「你好」 時,該程序啓動,但它是空的。
有人能告訴我我做錯了什麼嗎?
如果你讀過[數據綁定概述(http://msdn.microsoft.com/en-us/library/ms752347.aspx)你可能本來能夠把所有東西都弄出來...... – 2011-06-13 20:43:08
@HB我確實閱讀了數據綁定概述以及其他許多MSDN文檔頁面。實際上,我是在「創建綁定」下的示例中使用我的代碼,但它不起作用!他們的所有例子都使用了這個'Grid.Resources'或'DockPanel.Resources'等部分,這些部分只是爲我搞定了一些東西。 – HighCommander4 2011-06-13 20:48:35
那麼,只要輸入一個資源的關鍵字而不用'StaticResourceExtension'或一個在兩種情況下都使'Source'成爲一個字符串的類名就是一個常見的錯誤。您可以通過這種方式在XAML中創建源代碼,但不能使用該代碼的綁定標記擴展名,而是使用實際的Binding對象,然後您可以使用XML元素語法指定源代碼。 – 2011-06-13 20:51:35