无法在WPF中打开弹出窗口

时间:2014-04-17 02:20:07

标签: wpf

我无法打开弹出窗口。以下是我的代码。让我知道我在哪里做错了

XAML代码

      <StackPanel>
        <ItemsControl ItemsSource="{Binding BankNameList}" x:Name="lstvw">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button Style="{StaticResource HyperLinkButtonStyle}" Content="{Binding}" Command="{Binding Path=DataContext.OpenPopup, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ItemsControl}}}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </StackPanel>
    <StackPanel>
        <Grid>
            <Popup x:Name="Popup" IsOpen="{Binding Open}" StaysOpen="True" Placement="Bottom" >
                <Grid Background="Blue" Width="200" Height="100">
                    <TextBlock Text ="Hello"></TextBlock>
                </Grid>
            </Popup>
        </Grid>
    </StackPanel>

ViewModel代码

    private bool open;
    public bool Open
    {
        get { return open; }
        set
        {
            open = value;
            OnPropertyChanged("Open");
        }
    }
    public ICommand OpenPopup { get { return new RelayCommand(s => ShowPopup()); } }

    public void ShowPopup()
    {
        Open = true;
    }

1 个答案:

答案 0 :(得分:0)

阅读this documentation

由于你并没有真正发布XAML来控制这些控件是孩子们的控件,因此很难分辨出发生了什么。

无论如何,让我们说包含Popup的StackPanel一直在控件的底部,弹出窗口可能会弹出Windows任务栏,或者可能不会离开窗口的边界/控制它包含在。也许尝试不同的放置或设置放置目标。单击按钮后,使用Snoop检查Popup,以查看其IsOpen属性是否设置为true。

我唯一能想到的是你的DataContext是错误的。 OpenBankNameList位于同一ViewModel中吗?如果没有,那应该是。

修改

我将假设您的DataContext不正确。我创建了一个示例项目,这里是gist

一切似乎对我有用。我看到窗口左上角有一个弹出窗口。我把一个切换器放到了ShowPopup上,所以每次点击一个按钮时弹出窗口都会切换。