1

我一直在为这个问题苦苦挣扎一段时间。这似乎比较简单,但我不确定如何解决它。很想得到你的帮助。

我有一个绑定到 viewmodel 的页面,它有一些代表文件路径的字符串属性。

我已经构建了一个具有文本框和按钮的用户控件。该控件的目的:当您单击按钮时显示一个对话框(文件对话框),并根据结果更新文本框。

这是xaml:

<UserControl x:Class="MyProject.Controls.FilePickerLauncherControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         x:Name="me"
         d:DesignHeight="300" d:DesignWidth="300">
<DockPanel>
    <Button Content="..." DockPanel.Dock="Right" Command="{Binding OpenFileDialogCommand,ElementName=me}"></Button>
    <TextBox Text="{Binding Path=PathChosen,ElementName=me}" DockPanel.Dock="Right" VerticalAlignment="Center" Height="30"></TextBox>
</DockPanel>

这是我在页面视图模型(操作)中的命令:

    private void OpenFileExplorer()
    {
        SimpleIoc.Default.GetInstance<IInputOutputService>().OpenFileDialog(modelsDirectory);
    }

现在,对于我的控件的每个实例,我想要做的是获取对话框的结果并将其放入控件中的文本框中。我一直在想:

  1. 也许一个命令参数将被发送到这个 OpenFileExplorer,告诉哪个属性应该以某种方式更新,但我不确定如何。

  2. 为每个属性多次编写此命令。我不认为这是正确的。

  3. 使用此命令为我的控件创建一个新的视图模型,并在我当前的视图模型中创建它的实例。

你们会说最好的方法是什么?它相对简单,虽然它让我有点困惑。

4

0 回答 0