[英]WPF ContextMenu bind some property to another property of the same control
我在Window.Resource部分中定義了ContextMenu和ColumnHeaderStyle,並將其用於DataGrid ColumnHeader。 我的代碼是這樣的:
<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}">
我想知道是否可以(如果答案為是,那么我該怎么做)將ContextMenu Visibility屬性綁定到同一控件ContextMenu Items.Count> 0屬性。
最初基於其他TreeView控件的選擇,上下文菜單中應該沒有任何項目,但是我希望基於treeView中的選擇在ContextMenu中添加有意義的項目。 這部分完成了,上下文中有那些項。 在某些選擇上沒有項目,但是仍然在網格上顯示一個空的ContextMenu。 因此,我認為最簡單的部分是將Visibility綁定到同一控件的Items.Count屬性。
抱歉,如果我的英語不夠好,如果我第一次沒有講清楚,我會盡力解釋得更好。
使用此方法,可以綁定到同一控件中的屬性
Visibility="{Binding Path=Items.Count, RelativeSource={RelativeSource Self}}"
您還必須使用轉換器來實現所需的功能。
嘗試使用轉換器將項目計數的值轉換為布爾值。 所以你最終會得到類似
<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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.