ホバー ポップアップがある WPF アプリケーションを取得しました。ポップアップには、開くことができるさまざまなファイルのリストが含まれています (例: pdf、Excel など)。
ダブルクリックしてファイルをナビゲートして選択すると、期待どおりにファイルが開きます。
しかし、別のファイルに移動すると、ホバー選択が機能していないことがわかります。
ここで別のファイルを選択すると、元のファイルが再び開かれます。
私は Process.Start を使用しており、ファイルへのフルパスをメソッドに渡しています。
アプリケーションはかなりのサイズなので、これをさらに調べるために私が書いたテストアプリケーションの抜粋を次に示します
メイン ウィンドウの XAML
<Window x:Class="TestPopupIssue.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Canvas Margin="5" Background="Red" Width="200" Height="150" >
<Rectangle Name="rectangle1"
Canvas.Top="60" Canvas.Left="50"
Height="85" Width="60"
Fill="Black" MouseEnter="rectangle1_MouseEnter" MouseLeave="rectangle1_MouseLeave" />
<Popup x:Name="PopupWindow" PlacementTarget="{Binding ElementName=rectangle1}" Placement="Top" MouseEnter="rectangle1_MouseEnter" MouseLeave="rectangle1_MouseLeave">
<ListBox MinHeight="50" ItemsSource="{Binding Files}" MouseDoubleClick="FileList_MouseDoubleClick"`enter code here` x:Name="FileList" />
</Popup>
</Canvas>
</Window>
MainWindow.xaml.cs
public partial class MainWindow : Window
{
FileList f;
public MainWindow()
{
InitializeComponent();
f = new FileList();
f.PopulateFiles();
this.DataContext = f;
}
private void FileList_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (FileList.SelectedItem != null)
{
string item = FileList.SelectedItem as string;
if (item != null)
{
System.Diagnostics.Process.Start(item);
}
}
}
private void rectangle1_MouseEnter(object sender, MouseEventArgs e)
{
PopupWindow.IsOpen = true;
}
private void rectangle1_MouseLeave(object sender, MouseEventArgs e)
{
PopupWindow.IsOpen = false;
}
}
そして、FileList という名前のファイル パスの一般的な文字列リストを持つ FileList クラスがあります。
ありがとう