Кнопка ContextMenu как Ressource + Bind Content как CommandParameter - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу создать контекстное меню для кнопки и связать CommandParameter с содержимым кнопки. Кнопка с контекстным меню должна быть многократно используемой в нескольких ситуациях. Я создаю ContextMenu в Window.Resources, также я создал класс UserButton (где у меня расположены мои команды) и стиль для кнопки. В стиле я создал ContextMenu и установил значение ключа для моего ContextMenu, которое я создал ранее. У меня есть ItemsControl, где я создаю список кнопок (Userlist), теперь я хочу получить содержимое кнопки как CommandParameter (для этого примера это имя пользователя).

Связывание, которое я создал, работает до сих пор, но оно возвращает только первое имя пользователя, которое я выбрал из списка пользователей. Когда я щелкаю другого пользователя в списке, он возвращает мне то же значение от первого пользователя, которое применяется ко всем объектам в списке.

<Window.Resources>
        <ContextMenu x:Key="cm" DataContext="{StaticResource UserButton}">
            <MenuItem Header="Permit" Command="{Binding PermitCommand, diag:PresentationTraceSources.TraceLevel=High}" CommandParameter="{Binding Content, RelativeSource{RelativeSource FindAncestor, AncestorType={x:Type Button}}}"/>
        </ContextMenu>
            <Style TargetType="Button" x:Key="UserButton">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="FontSize" Value="{StaticResource Normal}"/>
            <Setter Property="Foreground" Value="white"/>
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <StaticResource ResourceKey="cm"/>
                </Setter.Value>
            </Setter>
        </Style>
</Window.Resources>
...