2012-10-12 63 views
6

我想設置一個從代碼隱藏的明確實現的接口屬性的綁定。代碼隱藏綁定的原因是隻能在運行時確定綁定屬性的路徑。WPF - 從後面的代碼/附加行爲綁定到顯式實現的接口屬性

在XAML,它是可能的(在MainWindow.xaml例子)正是如此結合:

<TextBox Text="{Binding (local:IViewModel.Property)}"/> 

而事實上,在後面的代碼結合以類似的方式工作(從MainWindow.xaml.cs ):

var binding = new Binding("(local:IViewModel.Property)"); 

因爲WPF能夠拾取名稱空間映射。

我的問題是,當名稱空間映射不存在(例如,在附加的行爲中)時,如何形成這樣的綁定?

非常感謝提前!

回答

9

你會指定一個完整PropertyPath

var propertyInfo = typeof(IViewModel).GetProperty("Property"); 
var propertyPath = new PropertyPath("(0)", propertyInfo); 
var binding = new Binding 
{ 
    Path = propertyPath 
}; 

有關傳遞給上述PropertyPath語法的詳細信息,請參閱PropertyPath.Path

+0

完美!像魅力 – mickeyt

+0

+1。你可能會發佈一個鏈接到這種特殊類型的索引的語法參考。我之前沒有看到它,並且無法在[PropertyPath XAML語法](http://msdn.microsoft.com/zh-cn/library/ms742451.aspx)MSDN文章中找到它。一直認爲它必須使用'[]'。 – Clemens

+1

@Clemens:好的,已更新。 –