chr
2026-04-05 fe750b791d5b517cc4e9bc8e99a9a75139a0cfba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using Microsoft.Win32;
using System.Windows;
using System.Windows.Controls;
 
namespace OpenTapEditor.UI
{
    /// <summary>
    /// FileSelector.xaml 的交互逻辑
    /// </summary>
    public partial class FileSelector : UserControl
    {
        public static readonly DependencyProperty FilePathProperty = DependencyProperty.Register(
                            "FilePath",
                            typeof(string),
                            typeof(FileSelector),
                            new FrameworkPropertyMetadata());
 
        public static readonly DependencyProperty ModeProperty = DependencyProperty.Register(
                            "Mode",
                            typeof(int),
                            typeof(FileSelector),
                            new FrameworkPropertyMetadata(0));
 
        public static readonly DependencyProperty FilterProperty = DependencyProperty.Register(
                            "Filter",
                            typeof(string),
                            typeof(FileSelector),
                            new FrameworkPropertyMetadata(null));
 
        public static readonly DependencyProperty ExtProperty = DependencyProperty.Register(
                            "Ext",
                            typeof(string),
                            typeof(FileSelector),
                            new FrameworkPropertyMetadata(null));
 
        public string FilePath
        {
            get => (string)GetValue(FilePathProperty);
            set
            {
                SetValue(FilePathProperty, value);
            }
        }
 
        public int Mode
        {
            get => (int)GetValue(ModeProperty);
            set
            {
                SetValue(ModeProperty, value);
            }
        }
 
        public string Filter
        {
            get => (string)GetValue(FilterProperty);
            set
            {
                SetValue(FilterProperty, value);
            }
        }
 
        public string Ext
        {
            get => (string)GetValue(ExtProperty);
            set
            {
                SetValue(ExtProperty, value);
            }
        }
 
        public FileSelector()
        {
            DataContext = this;
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog
            {
                Filter = this.Filter,
                DefaultExt = this.Ext,
                Multiselect = false
            };
            if (ofd.ShowDialog() == true)
            {
                if (Mode == 1)
                {
                    FilePath = "\"" + ofd.FileName.Replace("\\", "\\\\") + "\"";
                }
                else
                {
                    FilePath = ofd.FileName;
                }
            }
        }
    }
}