我在UserControl中創建了一個文本框, 我在UserControl中創建了一個屬性, 我想將textbox文本屬性綁定到在usercontrol中創建的屬性。將文本框的DataContext設置爲Silverlight中的當前類
問題是,我不知道如何在XAML中指定datacontext到當前類。
任何想法??謝謝
我在UserControl中創建了一個文本框, 我在UserControl中創建了一個屬性, 我想將textbox文本屬性綁定到在usercontrol中創建的屬性。將文本框的DataContext設置爲Silverlight中的當前類
問題是,我不知道如何在XAML中指定datacontext到當前類。
任何想法??謝謝
這將得到你在你的文本框中輸入你的代碼隱藏的屬性。根據你項目的規模,我會考慮MVVM將代碼推送到ViewModel,然後在UserControl中指定this.DataContext =你的ViewModel的一個實例。
的XAML:
<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<StackPanel>
<TextBox Text="{Binding Foo,Mode=TwoWay}"/>
<Button Content="Click" Click="Button_Click"/>
</StackPanel>
</UserControl>
代碼背後:
public partial class MainPage : UserControl
{
public string Foo { get; set; }
public MainPage()
{
InitializeComponent();
this.DataContext = this;
}
}
我會在代碼中創建綁定。假設您的文本框x:Name="MyTextBox"
也假定您已在用戶控件上添加了依賴項屬性(或至少一個標準屬性INotifyPropertyChanged
實現),請求MyText
。
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
Binding binding = new Binding("MyText");
binding.Mode = BindingMode.TwoWay;
binding.Source = this;
MyText.SetBinding(TextBox.TextProperty, binding);
}
}
這會將UserControl的DataContext
屬性保留爲其他更典型的用途。