我有一个应用程序,其中有一个主窗口和一个对话框。在主窗口中,我有一个具有两个属性的对象的列表框:名称和类型。我的对话框用于将新元素添加到列表框中。我已经创建了一个对话框作为UserControl,并将其用作对话框的WindowContent。我使用附加在按钮上的命令打开对话框。如果对话框的结果返回true,那么我想向列表框添加新元素。这可以通过带参数的命令完成,并使用多值转换器创建命令参数。这是问题:
如何在转换器中访问在usercontrol中创建的属性。
MainWindow.xaml
<vu:CustomContentDialogBox x:Name="AddCriterionDialogBox" Caption="Add criterion" WindowWidth="400"
WindowHeight="150" CommandTrue="{Binding Path=CriteriaViewModel.AddCriterionCommand}">
<vu:CustomContentDialogBox.CommandParameter>
<MultiBinding Converter="{StaticResource criterionConverter}">
<Binding Path="Name" />
<Binding Path="Type" />
</MultiBinding>
</vu:CustomContentDialogBox.CommandParameter>
<vu:CustomContentDialogBox.WindowContent>
<uc:AddCriterionUserControl />
</vu:CustomContentDialogBox.WindowContent>
</vu:CustomContentDialogBox>
<Button ToolBar.OverflowMode="Never" Style="{DynamicResource btn_Remove_png}"
Command="{Binding ElementName=AddCriterionDialogBox, Path=ShowCommand}" />
AddCriterionUserControl.xaml
<Grid>
<TextBox Name="tbName" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Stretch"
VerticalAlignment="Center" Margin="0,0,10,0" />
<ComboBox Name="cbCriterionType" Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch"
VerticalAlignment="Center" Margin="0,0,10,0" >
<ComboBoxItem Content="Gain" IsSelected="True" />
<ComboBoxItem Content="Cost" />
</ComboBox>
<Button Grid.Column="1" Grid.Row="3" VerticalAlignment="Center" HorizontalAlignment="Right" Width="60" Height="24" Margin="0,0,10,7"
Content="Add" vu:CustomContentDialogBox.CustomContentDialogResult="True"/>
</Grid>
我需要从转换器中的usercontrol访问值tbName
和cbCriterionType
,才能使用命令CriteriaViewModel.AddCriterionCommand
创建新对象。我应该使用DependencyProperty吗?我尝试遵循MVVM规则。