【问题标题】:WPF CommandParameter is not recognized in code代码中无法识别 WPF CommandParameter
【发布时间】: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 属性?

标签: wpf c#-4.0 commandparameter


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-16
    • 2017-11-19
    • 1970-01-01
    • 2020-01-25
    • 2022-10-22
    • 2020-10-13
    • 2012-03-06
    • 2015-07-12
    相关资源
    最近更新 更多