[英]How to show popup in ItemsControl
I want to show Popup
when I click on Label
( LabelShift_MouseDown
). 当我单击
Label
( LabelShift_MouseDown
)时,我想显示Popup
。 I basically want to edit shift when click on label(one label one shift) but I want when I click label to show popup (edit popup with edit buttons). 我基本上想在单击标签时编辑班次(一个标签一个班次),但是我想要在单击标签以显示弹出窗口时(使用编辑按钮编辑弹出窗口)。 So can somebody tell me how to do it because this code doesn't work.
有人可以告诉我该怎么做,因为此代码不起作用。 Here is my code:
这是我的代码:
<ItemsControl ItemsSource="{Binding Path=ScheduleItem}" Tag="{Binding .}" Margin="0,10,0,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type ContentPresenter}">
<Setter Property="Canvas.Left" Value="{Binding Path=Start, Converter={StaticResource timeToPositionConverter}}" />
<Setter Property="Canvas.Top" Value="{Binding Path=Index}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="TimeLineEntry">
<Label Width="{Binding Duration}" Height="20" Tag="{Binding .}" BorderThickness="1" BorderBrush="DarkGray" MouseDown="LabelShift_MouseDown">
<Label.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF3B4DFF" Offset="0.996" />
<GradientStop Color="#FF6674F8" Offset="0" />
<GradientStop Color="#FFC7CEFF" Offset="0.791" />
</LinearGradientBrush>
</Label.Background>
<Popup>
<StackPanel>
<TextBox Text="Text" />
<Button Content="Update" />
<Button Content="Delete" Style="{StaticResource DeleteButton}"/>
</StackPanel>
</Popup>
</Label>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
private void LabelShift_MouseDown(object sender, MouseButtonEventArgs e)
{
Popup p = (sender as Label).Content as Popup;
p.StaysOpen = true;
}
You need not to define the Popup
inside the DataTemplate
. 您无需在
DataTemplate
定义Popup
。 Add it in Resources
of your window or usercontrol like 将其添加到窗口的
Resources
或用户控件中,例如
<Popup x:Key="myPopup">
<StackPanel>
<TextBox Text="Text" />
<Button Content="Update" />
<Button Content="Delete" Style="{StaticResource DeleteButton}"/>
</StackPanel>
</Popup>
And in the MouseDown handler just do: 在MouseDown处理程序中,只需执行以下操作:
Popup popup = Resources["myPopup"] as Popup;
popup.PlacementTarget = sender as UIElement;;
popup.IsOpen = true
Try p.IsOpen = true;
尝试
p.IsOpen = true;
instead of p.StaysOpen = true;
而不是
p.StaysOpen = true;
. 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.