1

我有一个列出年份的列表视图和另一个具有年份组的列表视图。在第一个列表视图的 selectchanged 上使用 ICollectionView 过滤器填充年份组列表视图。

我想向组中添加一条新记录,但我需要年列表视图中选定项的 ID 作为外键。

我在 XML 中声明了 2 个静态视图模型资源。一个列表和一个新的空组。

<local:YearGroupListViewModel x:Key="YearGroupList" />
<local:YearGroupViewModel x:Key="NewYearGroup" />

为了在其他页面上创建新记录,我成功地将新视图模型作为参数传递给 add 命令(年份示例):

<Button x:Name="btnSettingsYearsSaveAdd" x:Uid="btnSettingsYearsSaveAdd" 
    Content="Submit" Margin="0,49,10,0" 
    Style="{DynamicResource ButtonStyle}"
    DataContext="{StaticResource ResourceKey=YearList}"
    CommandParameter="{StaticResource ResourceKey=NewYear}" 
    Command="{Binding Path=AddCommand}" />

这适用于不依赖于父列表视图 selecteditem id 用于外键目的的记录。

所以我试图在 SO 上使用这个问题中提到的多参数传递

我的问题是,如果只发送一个参数,我似乎无法将新组视图模型作为参数传递。

这就是我现在的位置:

XML

<Button x:Name="btnSettingsYearGroupsSaveAdd" x:Uid="btnSettingsYearGroupsSaveAdd"
    Content="Submit" Margin="0,49,10,0" 
    Style="{DynamicResource ButtonStyle}"
    DataContext="{StaticResource ResourceKey=YearGroupList}" 
    Command="{Binding Path=AddCommand}">
        <Button.CommandParameter>
            <MultiBinding Converter="{StaticResource paramConvert}">
                <Binding Path="YearGroup" 
                         ElementName="{StaticResource ResourceKey=NewYearGroup}"/>
                <Binding Path="SelectedItem" 
                         ElementName="lvwSettingsYears"/>
            </MultiBinding>
        </Button.CommandParameter>
    </Button>

静态资源键绑定不起作用。我尝试了十几种不同的衍生产品,但都失败了。

命令

public void OnExecute(object parameter)
    {
        var values = (object[])parameter;
        YearGroupViewModel newYearGroup = values[0] as YearGroupViewModel;
        yearID = (Int32)values[1];
    }

有没有人这样做过?非常感谢

4

1 回答 1

1

好吧,我想应该Source不是ElementName,如果您尝试绑定一个StaticResource.

<Button x:Name="btnSettingsYearGroupsSaveAdd" x:Uid="btnSettingsYearGroupsSaveAdd"
        Content="Submit" Margin="0,49,10,0" 
        Style="{DynamicResource ButtonStyle}"
        DataContext="{StaticResource ResourceKey=YearGroupList}" 
        Command="{Binding Path=AddCommand}">
    <Button.CommandParameter>
        <MultiBinding Converter="{StaticResource paramConvert}">
            <Binding Path="YearGroup" 
                     Source="{StaticResource ResourceKey=NewYearGroup}"/>
            <Binding Path="SelectedItem" 
                     ElementName="lvwSettingsYears"/>
        </MultiBinding>
    </Button.CommandParameter>
</Button>
于 2013-03-16T07:55:21.787 回答