从MainWindow的转换器中的UserControl访问值

时间:2018-09-19 11:23:26

标签: c# wpf mvvm

我有一个应用程序,其中有一个主窗口和一个对话框。在主窗口中,我有一个具有两个属性的对象的列表框:名称和类型。我的对话框用于将新元素添加到列表框中。我已经创建了一个对话框作为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访问值tbNamecbCriterionType,才能使用命令CriteriaViewModel.AddCriterionCommand创建新对象。我应该使用DependencyProperty吗?我尝试遵循MVVM规则。

0 个答案:

没有答案