0

我在 silverlight mvvm 中有一个组合框。我需要为组合框名称“SelectionChanged”编写事件。我在下面创建了编码,但它给出了一个错误。“在'InvokeCommandAction'类型中找不到属性'命令'”

注意:我没有使用 Silverlight Light。我正在使用 Silverlight5 及其一个 silverlight 应用程序。

<ComboBox x:Name="myComboBox" Width="150" ItemsSource="{Binding Items}" >
                                    <ComboBox.ItemTemplate>
                                        <DataTemplate>
                                            <StackPanel>
                                                <TextBlock Text="{Binding Name}"/>
                                            </StackPanel>
                                        </DataTemplate>
                                    </ComboBox.ItemTemplate>
                                    <i:Interaction.Triggers>
                                        <i:EventTrigger EventName="SelectionChanged">
                                            <i:InvokeCommandAction Command="{Binding LoadCommand}" CommandParameter="{Binding SelectedItem, ElementName=myComboBox}" />
                                        </i:EventTrigger>
                                    </i:Interaction.Triggers>
                                </ComboBox>

这一行错误来了。

<i:InvokeCommandAction Command="{Binding LoadCommand}" CommandParameter="{Binding SelectedItem, ElementName=myComboBox}" />
4

2 回答 2

1

似乎为我工作。确保您:

  1. 从此处安装适用于 SL5 的 Blend Preview
  2. 参考System.Windows.InteractivityMicrosoft.Expression.Interactions在您的 Silverlight 项目中
  3. 在 XAML 中定义正确的命名空间:xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
于 2012-10-17T20:52:36.050 回答
0

嗨,最后我找到了解决方案。我在 XAML 页面中包含以下内容:

 xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:si="clr-namespace:Expression.Samples.Interactivity;assembly=Expression.Samples.Interactivity"

那么组合框的代码是:

<ComboBox ItemsSource="{Binding Employees,Mode=TwoWay}"  DisplayMemberPath="Dept" SelectedItem="{Binding Names, Mode=TwoWay}" Margin="130,117,0,0" Height="26" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectionChanged">
                    <si:CallDataMethod Method="AddEmployee"/>
                    <si:SetProperty TargetName="LayoutRoot" PropertyName="Background" Value="PaleGoldenrod"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </ComboBox>

这里的员工就像一个数据源,用于获取 Observable Collections 中的所有员工。该代码写在 Employee.cs 文件中。

然后我们访问 ComboboxSelected 事件如下。转到 ViewModel 文件夹并编写如下命名的函数,

public void AddEmployee()
{
//Your Code....
}

快乐编码...!

于 2012-10-18T04:48:36.673 回答