我如何在Loaded ="上传递参数? &#34 ;?

时间:2015-05-27 16:57:34

标签: c# wpf xaml parameters

我希望能够在Loaded=" "上传递枚举参数,这样我就可以轻松识别正在加载的部分而无需对名称进行字符串欺骗。

My Expander XAML:

<Expander Loaded="ExpanderLoaded" x:Name="Greeting_And_Opening_Expander" ExpandDirection="Down" IsExpanded="True" FontSize="14" FontWeight="Bold" Margin="5" BorderThickness="1" BorderBrush="#FF3E3D3D">

我希望它调用的方法:

    private void ExpanderLoaded(object sender, RoutedEventArgs e, Sections section)
    {
        //Do stuff
    }

My Enum(它会大得多,这只是一次试运行):

public enum Sections
{
    Default = 0,
    Opening = 1,
    Verify = 2
}

如何在加载时将枚举作为参数传递?

1 个答案:

答案 0 :(得分:1)

我会使用EventTrigger和InvokeCommand动作执行此操作,在视图模型中以这种方式调用ElementLoaded(缺少更好的名称),并传入适当的枚举。

<Expander>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Loaded">
            <i:InvokeCommandAction Command="{Binding ElementLoaded}" 
                               CommandParameter="{x:Static local:Sections.Default}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</Expander>

在ViewModel中,您将拥有一个名为ElementLoaded的ICommand类型的属性,然后在构造函数中将其初始化为

ElementLoaded = new ActionCommand(ElementLoadedMethod);

并且ElementLoadedMethod可以如此

    private void ElementLoadedMethod(object section)
    {
        var sectionEnumVal =  (Sections)section;
    }

这应该是你所要做的。