3
我想爲我的應用程序中的所有上下文菜單創建樣式。這種風格將允許我爲我的上下文菜單添加標題/標題。我使用的是現在的風格是如下將標題/標題添加到上下文菜單
<Style x:Uid="someStyle" TargetType="{x:Type ContextMenu}">
<Setter x:Uid="Setter_240" Property="Background" Value="{DynamicResource someBrush}" />
<Setter x:Uid="Setter_241" Property="BorderBrush" Value="{DynamicResource someBorderBrush}" />
<Setter x:Uid="Setter_242" Property="SnapsToDevicePixels" Value="True" />
<Setter x:Uid="Setter_243" Property="Template">
<Setter.Value>
<ControlTemplate x:Uid="ControlTemplate_30" TargetType="{x:Type ContextMenu}">
<Grid x:Uid="Grid_27">
<Border x:Uid="Border_25" Margin="1" x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" />
<StackPanel x:Uid="StackPanel_4" Background="{TemplateBinding Background}" IsItemsHost="True" ClipToBounds="True" Orientation="Vertical" />
</Grid>
<ControlTemplate.Triggers>
<Trigger x:Uid="Trigger_76" Property="IsEnabled" Value="False">
<Setter x:Uid="Setter_244" Property="Background" Value="{DynamicResource someBrush}" TargetName="Border" />
<Setter x:Uid="Setter_245" Property="BorderBrush" Value="{DynamicResource someBrush}" TargetName="Border" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
這種風格的工作對我蠻好,但沒有添加頁眉/標題的能力。我最初的想法是在這裏舉行的僞標籤
我希望我可以用這個標籤的綁定頁眉/標題所有的上下文菜單。我遇到的問題是我不知道如何使這個標籤是可綁定的,以便每個上下文菜單可以有不同的標題/標題。這個解決方案也必須儘可能地自包含。我不想讓每個使用上下文菜單的人都必須添加多行來啓用這個功能,也就是說,我希望頭部是可選的,而不是每個菜單上的要求,所以如果有觸發器或某些東西這可能會隱藏標題,如果它沒有設置
什麼是最好/最乾淨的方式來實現這一目標,並儘可能使其可重用?
如果未設置datacontext會發生什麼情況?有沒有不需要IsVisible值的解決方案?觸發器是否可以告訴MenuTitle是否爲空或空,並且不顯示標題? –
我相信如果你的datacontext沒有設置,你會在你的輸出窗口中得到錯誤/警告。如果IsVisible是一個bool,那麼你不必設置它,默認情況下它是「false」。如果你不想提供綁定,你可以在你的樣式中通過setter提供默認值,那樣樣式的屬性只會通過觸發器改變。所以基本上,是的,綁定不是必需的。如果你沒有提供它,控件就不會顯示任何東西(除非設置了默認值) –
嗨,我用一些你的信息和其他一些研究來提出一個合適的解決方案。最後,我決定在我們的樣式庫中創建第二個上下文菜單,用戶必須通過'Style = {StaticResource yourstyle}'指定他們想要使用的樣式。更改現有上下文樣式會導致其他地方的現有上下文菜單出現問題。謝謝 –