Как прикрепить EventTrigger в коде позади в Silverlight 4 - PullRequest
2 голосов
/ 30 августа 2010

У меня следующий вопрос:

У меня есть сетка, и я прикрепил событие SelectedIndexChanged следующим образом в файле xaml:

"<cc:DetailViewGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" Margin="0,0,0,0" Name="dgAcitivityList" VerticalAlignment="Stretch" ItemsSource="{Binding EntityList}" SelectionMode="Single" IsReadOnly="False">
            <interactivity:Interaction.Triggers>
                <interactivity:EventTrigger EventName="SelectionChanged">
                    <interactivity:InvokeCommandAction Command="{Binding SelectedItemChangeCommand}" CommandParameter="{Binding SelectedItem, ElementName=dgAcitivityList}"/>
                </interactivity:EventTrigger>
            </interactivity:Interaction.Triggers>"

Но я хочу прикрепить это событие в коде позади. Я создал собственную сетку, унаследованную от сетки Windows, и поставил этот код под свой контроль.

   public override void OnApplyTemplate()
        {
            //base.OnApplyTemplate();

            System.Windows.Interactivity.EventTrigger selectedItemChangedTrigger = new System.Windows.Interactivity.EventTrigger("SelectionChanged");

            System.Windows.Interactivity.InvokeCommandAction action = new System.Windows.Interactivity.InvokeCommandAction();

            action.CommandName = "{Binding SelectedItemChangeCommand}";

            action.CommandParameter = string.Format("{{Binding SelectedItem, ElementName={0}}}", this.Name);

            selectedItemChangedTrigger.Actions.Add(action);

            System.Windows.Interactivity.Interaction.GetTriggers(this).Add(selectedItemChangedTrigger);

            base.OnApplyTemplate();
        }

Правильно ли это решение? Это не работает, но я не уверен, что я должен поместить этот код в метод OnApplyTemplate().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...