我一直在努力與這段代碼一段時間了,似乎無法找到任何完整的答案,我的問題。我創建了一個小樣本來說明這個問題:條件綁定屬性不工作?
<ListView >
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Margin="0,0,20,0" IsItemsHost="True" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.Items>
<TextBlock>Test1</TextBlock>
<TextBlock>Test2</TextBlock>
<TextBlock>Test3</TextBlock>
<TextBlock>Test4</TextBlock>
<TextBlock>Test5</TextBlock>
</ListView.Items>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Grid>
<ContentPresenter/>
</Grid>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True" />
<Condition Property="IsSelected" Value="True"/>
</MultiTrigger.Conditions>
<Setter Property="Visibility" Value="Collapsed"/>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
</ListView>
按照MultiTrigger設置,當鼠標不再在選定的項目所選項目應重新出現。但是,此代碼會生成一個InvalidOperationException異常,並顯示消息「必須對'Property'具有非空值。」如果刪除使用「綁定」屬性的條件,則不會引發異常。在MSDN文檔中,它聲明您必須設置屬性或綁定屬性。上述代碼功能像Binding屬性沒有設置。實際上,在我的所有測試用例中,綁定屬性設置爲什麼並不重要;異常仍然拋出。有什麼想法嗎?
+1承認boneheadedness並提供解決方案。其他人會遇到這種情況。缺少「數據」一詞很容易忽略。 – 2009-08-11 03:08:06
+1讓我更快地找到解決方案,而不是通過文檔查找和閱讀。錯誤應該解釋這個,而不是依靠文檔。 – jpierson 2010-09-09 18:01:29
+1剛剛做出了同樣的骨頭移動。你的帖子可能爲我節省了一個小時。 – 2011-03-15 15:08:21