首页 > 解决方案 > 如何将命令定义为 StaticResource WPF

问题描述

我正在尝试将 a 绑定到 a 中定义的命令,DataContext但是我不能使用,因为列不是层次结构的一部分,所以我当前的解决方案是在中定义命令并引用它。xamlDataGridColumnRelativeSourceResourceDictionary

但是我的问题是我似乎找不到如何在 中定义一个ICommandResourceDictionary我该怎么做?或者任何其他方式来访问我的DataContext命令DataGridColumn

xmlns:input="clr-namespace:System.Windows.Input;assembly=System"

...

<UserControl.Resources>
    <ResourceDictionary>
        <input:ICommand x:Key="propertyChangedEvent">
             "{Binding PropertyChangedEvent}"
        </input:ICommand>
    </ResourceDictionary>
</UserControl.Resources>

...

<DataGridTemplateColumn Header="Notes" MinWidth="350" Width="*" IsReadOnly="False">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <StackPanel Margin="1">
                <TextBox Text="{Binding Notes, UpdateSourceTrigger=LostFocus}" BorderThickness="0" AcceptsReturn="True" TextWrapping="Wrap" >
                    <i:Interaction.Triggers >
                        <i:EventTrigger EventName="TextChanged">
                            <i:InvokeCommandAction  Command="{StaticResource propertyChangedEvent}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </TextBox>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

标签: c#wpfxaml

解决方案


尝试通过提供具有DatacContext.

<i:InvokeCommandAction  Command="{Binding ElementName=Window1, Path=DataContext.CommandPropertyName}" />

推荐阅读