簡體   English   中英

WPF ContextMenu將某些屬性綁定到同一控件的另一個屬性

[英]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屬性。

抱歉,如果我的英語不夠好,如果我第一次沒有講清楚,我會盡力解釋得更好。

您想通過RelativeSource進行綁定,尤其是Self模式。
我認為通過閱讀本節本節,您將能夠實現自己的目標。

然后,您將需要一個綁定轉換器,以將整數值轉換為Visibility屬性的匹配類型和值。 您可以在這里找到簡短的教程。

問候

使用此方法,可以綁定到同一控件中的屬性

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM