2010-06-14 150 views
1

我有一個ContextMenu和一個ColumnHeaderStyle在Window.Resource部分中定義,我將其用於DataGrid ColumnHeader。我的代碼是這樣的:WPF ContextMenu將某些屬性綁定到同一控件的另一個屬性

<ContextMenu x:Key="cm_columnHeaderMenu"/> 

<Style x:Key="DefaultColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}"> 
    <Setter Property="ContextMenu" Value="{StaticResource cm_columnHeaderMenu}" /> 
</Style> 

<DataGrid Grid.Column="2" Grid.Row="1" x:Name="dgridFiles" IsReadOnly="True" 
ColumnHeaderStyle="{StaticResource DefaultColumnHeaderStyle}"> 

我想知道如果我可以(如果答案是真的,那麼如何我,我可以做到這一點)的文本菜單Visibility屬性同一控制文本菜單Items.Count綁定> 0屬性。

最初基於一些其他的treeView控件選擇,在上下文菜單中沒有任何項目,但我希望根據treeView中的選擇在ContextMenu中添加Dinamically項目。這部分已經完成,上下文有這些項目。在某些選項中沒有項目,但仍然在網格上顯示爲空的ContextMenu。所以我相信最容易的部分是將可見性綁定到同一控件的Items.Count屬性。

對不起,如果我的英文不夠好,我會盡力解釋,如果我沒有明確第一次。

回答

0

嘗試使用轉換器將項目數的值轉換爲布爾值。所以,你的東西落得像

<ContextMenu Visibility={Binding RelativeSource={RelativeSource Self}, 
Converter={StaticResource ItemsToVisibilityConverter}, Path=Items.Count}} /> 

如果不行,試試這個數據觸發(你還需要一個轉換器,無論如何,這說明在工作轉換器):

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a8ad8c14-95aa-4ed4-b806-d0ae874a8d26/

+0

了'Items.Count'必須由路 – Amsakanna 2010-06-14 09:00:14

+0

啊轉換爲'Visibility'枚舉,冷靜,謝謝:) – Lunivore 2010-06-14 11:42:52

2

你想通過RelativeSource綁定,特別是Self模式。
我認爲通過閱讀thisthis你將能夠實現你的目標。

然後,您需要綁定轉換器將整數值轉換爲Visibility屬性的匹配類型和值。你會找到一個簡短的教程here

問候

1

使用這個可以綁定到該屬性在同一控制

Visibility="{Binding Path=Items.Count, RelativeSource={RelativeSource Self}}" 

你也必須使用一個轉換器來實現你想要什麼。

Just in case you need this

相關問題