WPF Bug清單之(12)——與自定義Attached Property相關的Binding Path運行時錯誤
我們都知道DataBinding的格式是這樣的:
{Binding Path=PropertyName}
其中的Path=這幾個字是可以省略的。從而簡寫成:
{Binding PropertyName}
這個行為也在MSDN上面特別介紹過。
本文所指“解析錯誤”是指:當Property是自定義的AttachedProperty時, 第二種寫法會產生運行時錯誤。如下代碼所示:
Demo Code
<Window x:Class="BindingPathBug.DemoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation& quot;
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BindingPathBug"
Title="{Binding (ToolTipService.ToolTip), ElementName=button} "
Height="300" Width="300">
<Button x:Name="button"
ToolTipService.ToolTip="Tooltip"
Content="{Binding (local:ContentService.Content), ElementName=button}"
local:ContentService.Content="Button Content"/>
</Window>
其中,第一個綁定是可以正確運行的。而第二個綁定是不能正確運行的。必 須要寫成下面這樣才行。
Content="{Binding Path=(local:ContentService.Content), ElementName=button}"
這個應該是Binding Markup Extension的解析錯誤。整個程序可以從這裡下 載。
有些人(包括我)在Binding中都會把“Path”這個關鍵詞省略掉,然而就在 Binding到custom attached property時屢試都爽!可就是不知道問題出在哪。 最後無意中發現加上“Path”就好了,然後就想問候一下微軟的Dev和QA。
好消息是這個Bug在.NET 4.0 Beta2中已經Fix了。畢竟整個XAML解析都重寫 了。