我有一个列表视图,列出年份和另一个列表视图,其中包含年份组。 使用第一个列表视图的selectchanged上的ICollectionView过滤器填充年份组列表视图。
我想在组中添加新记录,但是我需要年份列表视图中的selecteditem的ID作为外键。
我在XML中声明了2个静态viewmodel资源。一个列表和一个新的空组。
<local:YearGroupListViewModel x:Key="YearGroupList" />
<local:YearGroupViewModel x:Key="NewYearGroup" />
为了在其他页面上创建新记录,我成功地将新的viewmodel作为参数传递给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}" />
对于没有依赖于父列表视图selectitem id的记录,这适用于外键用途。
所以我尝试使用this question on 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];
}
以前有人这样做过吗?非常感谢
答案 0 :(得分: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>