У меня есть вопрос, и мне нужна помощь.Listbox SelectedItem щелкните правой кнопкой мыши, чтобы открыть Popup, как управлять позицией отображения всплывающего окна!
Мышь покинула выбранный элемент, но selectedItem выбран, я не хочу отображать его в текущей позиции мышикак контролировать
спасибо!`
<Grid>
<ListBox x:Name="listbox" SelectedItem="{Binding SelectObj}" ItemTemplate="{DynamicResource ItemTemplate}" ItemsSource="{Binding ListPersion}">
<Event:Interaction.Triggers>
<Event:EventTrigger EventName="PreviewMouseRightButtonUp">
<Event:InvokeCommandAction Command="{Binding RightPopupEdit}" CommandParameter="{Binding ElementName=listbox, Path=SelectedItem}" />
</Event:EventTrigger>
</Event:Interaction.Triggers>
</ListBox>
<Popup IsOpen="{Binding Isopen}"
StaysOpen="False" AllowsTransparency="True" PopupAnimation="Slide"
PlacementTarget="{Binding ElementName=listbox,Path=SelectedItem}" Placement="MousePoint">
<Border Width="110" BorderThickness="1" BorderBrush="Red" Height="60" Background="White">
<StackPanel Orientation="Vertical">
<TextBlock Text="ID"/>
<TextBlock Text="{Binding SelectObj.ID}"/>
<TextBlock Text="Name"/>
<TextBlock Text="{Binding SelectObj.Name}"/>
</StackPanel>
</Border>
</Popup>
</Grid>
`
enter code here
Код ViewModel
открытый класс MainViewModel: BindableBase {private Person myVar;
public Person SelectObj
{
get { return myVar; }
set {SetProperty(ref myVar , value); }
}
private ObservableCollection<Person> listPersion;
public ObservableCollection<Person> ListPersion
{
get { return listPersion; }
set {SetProperty(ref listPersion , value); }
}
public MainViewModel()
{
RightPopupEdit = new DelegateCommand<Person>(Event_PopupEdit);
ListPersion = new ObservableCollection<Person>
{
new Person() { ID = 1, Name = "Jon" },
new Person() { ID = 2, Name = "Jon1" },
new Person() { ID = 3, Name = "Jon2" },
new Person() { ID = 4, Name = "Jon3" },
new Person() { ID = 5, Name = "Jon4" },
new Person() { ID = 6, Name = "Jon5" }
};
}
private void Event_PopupEdit(Person obj)
{
Isopen = true;
}
private bool isopen;
public bool Isopen
{
get { return isopen; }
set {SetProperty(ref isopen , value); }
}
public ICommand RightPopupEdit { get; set; }
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
enter code here