0
DependencyPropertys默認爲雙向綁定嗎?如果不是你如何指定?Silverlight/MVVM中的用戶控制數據綁定
我想問的原因是我有,這是造成我的問題下面的用戶控件...
<UserControl x:Class="SilverlightApplication.UserControls.FormItem_TextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<StackPanel Style="{StaticResource FormItem_StackPanelStyle}" >
<TextBlock x:Name="lbCaption" Style="{StaticResource FormItem_TextBlockStyle}" />
<TextBox x:Name="tbItem" Style="{StaticResource FormItem_TextBoxStyle}" />
</StackPanel>
背後的代碼,這是...
public partial class FormItem_TextBox : UserControl
{
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(string), typeof(FormItem_TextBox), new PropertyMetadata(string.Empty, ValueChanged));
public static readonly DependencyProperty CaptionProperty = DependencyProperty.Register("Caption", typeof(string), typeof(FormItem_TextBox), new PropertyMetadata(string.Empty, CaptionChanged));
public string Value
{
get { return (String)GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
public string Caption
{
get { return (String)GetValue(CaptionProperty); }
set { SetValue(CaptionProperty, value); }
}
private static void ValueChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
(source as FormItem_TextBox).tbItem.Text = e.NewValue.ToString();
}
private static void CaptionChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
(source as FormItem_TextBox).lbCaption.Text = e.NewValue.ToString();
}
public FormItem_TextBox()
{
InitializeComponent();
}
}
在我的頁面中,我使用這樣的控件....
<UC:FormItem_TextBox Caption="First Name: " Value="{Binding Path=FirstName, Mode=TwoWay}" />
但是文本框的任何更新都未發送到模型。
如果我用這樣的標準文本框....
<TextBlock Text="Firstname:"/>
<TextBox Text="{Binding Path=FirstName, Mode=TwoWay}" />
然後綁定雙向工作perfecly。任何想法我的控制有什麼問題?
乾杯,
ETFairfax。
感謝Bryant的迴應。 我認爲這將是類似的東西,但認爲這有點不可思議,因爲在擁有的ValueChanged (源作爲FormItem_TextBox).tbItem.Text = e.NewValue.ToString(); ...哪種感覺就像我要循環往復一樣;你懂我的意思嗎? 無論如何,你建議的作品,所以這就是最重要的!謝謝。 – ETFairfax 2009-10-23 10:48:49
ValueChanged從VM到控件。 TextChanged處理程序用於返回其他方向。 – Bryant 2009-10-23 16:20:42