我无法打开弹出窗口。以下是我的代码。让我知道我在哪里做错了
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;
}
答案 0 :(得分:0)
由于你并没有真正发布XAML来控制这些控件是孩子们的控件,因此很难分辨出发生了什么。
无论如何,让我们说包含Popup的StackPanel一直在控件的底部,弹出窗口可能会弹出Windows任务栏,或者可能不会离开窗口的边界/控制它包含在。也许尝试不同的放置或设置放置目标。单击按钮后,使用Snoop检查Popup,以查看其IsOpen属性是否设置为true。
我唯一能想到的是你的DataContext是错误的。 Open
与BankNameList
位于同一ViewModel中吗?如果没有,那应该是。
修改强>
我将假设您的DataContext不正确。我创建了一个示例项目,这里是gist。
一切似乎对我有用。我看到窗口左上角有一个弹出窗口。我把一个切换器放到了ShowPopup上,所以每次点击一个按钮时弹出窗口都会切换。