首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WFP数据库依赖项

WFP数据库依赖项
EN

Stack Overflow用户
提问于 2014-09-08 20:52:02
回答 1查看 388关注 0票数 1

在发布我的XAML之前,总结一下,这个表单现在非常简单。有一个ListBox、两个按钮和一个ListBox上下文菜单。

如果在ListBox中单击鼠标右键,而没有选择任何元素,则我的上下文菜单将执行添加操作,该操作现在只是简单地弹出一个消息框。

当选择元素(例如修改)时,我的绑定不起作用。因此,我认为,经过大量阅读,我在某个地方有继承问题。我试过用DataContext,RelativeSource,etc...and,仍然没有joy。

这是我的XAML

代码语言:javascript
复制
<Window x:Class="FracasReportSettings.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:ignore="http://www.ignore.com"
    mc:Ignorable="d ignore"
    Height="402"
    Width="578"
    Title="FRACAS Ticket Value Modification"
    DataContext="{Binding Main, Source={StaticResource Locator}}">

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Skins/MainSkin.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

<Grid x:Name="LayoutRoot">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="91*"/>
        <ColumnDefinition Width="194*"/>
    </Grid.ColumnDefinitions>

    <TextBlock FontSize="36"
               FontWeight="Bold"
               Foreground="Purple"
               Text="{Binding PageTitle}"
               VerticalAlignment="Center"
               HorizontalAlignment="Center"
               TextWrapping="Wrap" Margin="266,27,10,9" Width="112" Grid.Column="1" />

    <StackPanel HorizontalAlignment="Left" Height="311" Margin="40,22,0,0" VerticalAlignment="Top" Width="111">
        <Button Content="Detection Method" Margin="10,10,10,10"
                Command="{Binding MyBinding}"
                CommandParameter="DetectionMethod"/>
        <Button Content="Button" Margin="10,0,10,0"/>
    </StackPanel>

    <ListBox 
        Name="AdminList"
        ItemsSource="{Binding Names}"
        Height="302"  Width="231" Margin="151,22,0,0"
        HorizontalAlignment="Left"   VerticalAlignment="Top" Grid.ColumnSpan="2"
        SelectedItem="{Binding SomeName}"
       >

        <ListBox.Resources>
            <Style TargetType="ListBoxItem">
                <Style.Triggers>
                    <Trigger Property="IsKeyboardFocusWithin" Value="True">
                        <Setter Property="IsSelected" Value="True"/>
                    </Trigger>                                 
                </Style.Triggers> 
            </Style>                
        </ListBox.Resources>

       **<-- THIS WORKS FINE -->
       <ListBox.ContextMenu>
            <ContextMenu>
                <MenuItem Header="Add"                             
                          Command="{Binding RCContentMenu}">                        
                </MenuItem>
            </ContextMenu>
        </ListBox.ContextMenu>**

        <--MY ERROR IS IN HERE-->
        **<ListBox.ItemContainerStyle>                
            <Style TargetType="ListBoxItem">                    
                <Setter Property="ContextMenu">
                    <Setter.Value>
                        <ContextMenu DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=DataContext}">
                            <MenuItem Header="Modify"                                           
                                Command="{Binding Path=ModifyElementCommand}"
                                CommandParameter="{Binding Path=SelectedItem}"/>

                        </ContextMenu>
                    </Setter.Value>                        
                </Setter>
            </Style>
        </ListBox.ItemContainerStyle>**

    </ListBox>
</Grid>

ModifyElementCommand坐在一个名为MainViewModel的ViewModel中。

从输出窗口收到的错误是:

AncestorType='System.Windows.Controls.ListBox',System.Windows.Data错误:4:无法找到引用'RelativeSource FindAncestor,RelativeSource AncestorLevel=‘1’绑定的源代码。BindingExpression:Path=DataContext;DataItem=null;目标元素是'ContextMenu‘(名称=’‘);目标属性是'DataContext’(键入'Object')

我知道这意味着无法找到依赖性。

我该怎么做才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-10 10:01:14

下面我的评论是XAML:

代码语言:javascript
复制
<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu DataContext="{Binding RelativeSource={RelativeSource Self},Path=PlacementTarget.Tag.DataContext}">
                    <MenuItem Header="Modify"                                           
                    Command="{Binding Path=ModifyElementCommand}"
                    CommandParameter="{Binding Path=SelectedItem}"/>

                </ContextMenu>
            </Setter.Value>
        </Setter>
        <Setter Property="Tag" Value="{Binding ElementName=AdminList}" />
    </Style>
</ListBox.ItemContainerStyle>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25732973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档