代码中无法识别 WPF CommandParameter

Posted

技术标签:

【中文标题】代码中无法识别 WPF CommandParameter【英文标题】:WPF CommandParameter is not recognized in code 【发布时间】:2014-09-21 08:08:45 【问题描述】:

这是一个 WPF 应用程序。按钮为空且无法识别 CommandParameter。我不知道如何解决这个问题。有任何想法吗? 这是代码:

private void Button_Click(object sender, RoutedEventArgs e)

var button = (Button) sender;
var userName = button.CommandParameter;





<TabControl Name="ImTabControl"
                    Width="670"
                    Height="450"
                    Margin="0,10,5,0"
                    HorizontalAlignment="Right"
                    VerticalAlignment="Top"
                    ItemsSource="Binding">
            <TabControl.Resources>
                <DataTemplate x:Key="TabHeader" DataType="TabItem">
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Margin="0,0,5,0"
                                   HorizontalAlignment="Left"
                                   VerticalAlignment="Center"
                                   Text="Binding RelativeSource=RelativeSource AncestorType=x:Type TabItem,
                                                  Path=Header" />
                        <Button Name="ImButton"
                                Click="CloseTabButton_OnClick"
                                CommandParameter="Binding RelativeSource=RelativeSource AncestorType=x:Type TabItem,
                                                           Path=Name">
                            <Image Width="7"
                                   Height="7"
                                   Source="../Resources/Images/CloseWindow.png" />
                        </Button>
                    </StackPanel>
                </DataTemplate>
            </TabControl.Resources>
        </TabControl>

【问题讨论】:

你的 AncestorType 需要是 TabControl 吗? 你为什么要绑定CommandParameter 而没有Command 属性? 【参考方案1】:

我已将 CommandParameter 更改为 Tag 并将 sender as Button 更改为 (FrameworkElement)sender。

Tag="Binding RelativeSource=RelativeSource AncestorType=x:Type TabItem, Path=Name">


var button = (FrameworkElement)sender;
var tabName = button.Tag as string;

【讨论】:

以上是关于代码中无法识别 WPF CommandParameter的主要内容,如果未能解决你的问题,请参考以下文章

WPF C# 编码行无法识别坐标原点

为啥WPF无法识别我的这个DynamicResource

一个基于Windows Vista speech API5 3以及WPF技术的语音识别代码

类库无法识别 CommandManager 类

WPF 绑定中的公式

wpf 无法更改代码隐藏中的图像来源