我一直在努力解决这个问题。这似乎相对简单,但我不确定如何解决它。非常喜欢你的帮助。
我有一个绑定到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);
}
现在,对于我的控件的每个实例,我想要做的是获取对话框的结果并将其放在控件中的文本框中。我一直在想:
可能是一个命令参数,可以发送到这个OpenFileExplorer,告诉我应该以某种方式更新哪个属性,但我不确定如何。
为每个属性多次写入此命令。我不认为这是正确的。
使用此命令为我的控件创建一个新的viewmodel,并在我当前的视图模型中创建它的实例。
你们会说最好的方法是什么?它相对简单,虽然让我感到困惑。