1
我有一個DataGrid和一個TextBox的自定義UserControl,我試圖使用DependencyProperties將這些元素綁定到數據綁定。該綁定適用於DataGrid,但不適用於TextBox。如何設置文本框與DependencyProperty的綁定
代碼:
public static readonly DependencyProperty BuiDataProperty = DependencyProperty.Register("BuiData", typeof(IEnumerable), typeof(BelastingTab), new PropertyMetadata(default(IEnumerable), BuiDataChanged));
private static void BuiDataChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var Object = d as BelastingTab;
if (Object == null) return;
Object.BuiDataDataSourceChanged(d, e);
}
private void BuiDataDataSourceChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
BuiDataTabel.ItemsSource = dependencyPropertyChangedEventArgs.NewValue as IEnumerable;
}
public IEnumerable BuiData
{
get { return (IEnumerable)GetValue(BuiDataProperty); }
set { SetValue(BuiDataProperty, value); }
}
,並在主XAML:
<src:BelastingTab BuiData="{Binding Path=Static.BuienRegulier[0].BuiTabel}"/>
這是用於設置DataGrid的綁定代碼,我怎麼會去這樣做相同的文本框?
編輯: 這是我目前,
主要XAML:
<src:BelastingTab BuiData="{Binding Path=Static.BuienRegulier[0].BuiTabel}" HerhalingsTijd="{Binding Path=Static.BuienRegulier[0].HerhalingsTijd}"/>
這是指一個字符串。在用戶控件XAML:
<TextBox Text="{Binding HerhalingsTijd, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
在用戶控件XAML CS:
public static readonly DependencyProperty HerhalingsTijdProperty = DependencyProperty.Register("HerhalingsTijd", typeof(string), typeof(BelastingTab), new PropertyMetadata(string.Empty));
public string HerhalingsTijd
{
get { return (string)GetValue(HerhalingsTijdProperty); }
set { SetValue(HerhalingsTijdProperty, value); }
}
我發佈了一個編輯與我有什麼,不工作 – user3692104 2014-10-02 17:01:58
添加您的RelativeSource它的作品後,你可以向我解釋這是什麼? – user3692104 2014-10-02 17:04:52
相對來源是必需的,因爲它是從用戶控件訪問類屬性後面的代碼的唯一方法。您在控件中沒有數據上下文,因此無論是將數據上下文設置爲Self,還是使用相對源代碼從代碼中訪問屬性,綁定都知道從何處獲取該屬性。你需要一點實驗和閱讀來充分理解這個 – XMight 2014-10-04 12:53:12