小编Dan*_*anW的帖子

带有contextmenu canexecute的WPF列表框在选择之前不会被调用

我有一个ListBox,ItemTemplate绑定到我的项目的ObservableCollection.目前,我正在尝试实现剪切/复制/粘贴/选择所有(为了简短起见,我只会在这里显示selectall ...)

<UserControl.CommandBindings>
    <CommandBinding Command="SelectAll" CanExecute="SelectAll_CanExecute" Executed="SelectAll_Executed"/>
</UserControl.CommandBindings>
<ListBox x:Name="listbox" 
         ItemsSource="{Binding}" 
         Background="Transparent" 
         SelectionMode="Extended"
         ScrollViewer.VerticalScrollBarVisibility="Auto">
    <ListBox.ContextMenu>
        <ContextMenu>
            <MenuItem Command="SelectAll" />
        </ContextMenu>
    </ListBox.ContextMenu>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Background="Transparent">
                <CheckBox Name="cbEnabled" IsChecked="{Binding Enabled, Mode=TwoWay}" Margin="0,2,0,0"/>
                <TextBlock Text="{Binding Name}" Padding="5,0,0,0"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

这是canexecute的代码隐藏:

    private void SelectAll_CanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = listbox.Items.Count > 0;
        e.Handled = true;
    }
Run Code Online (Sandbox Code Playgroud)

当我第一次运行程序并右键单击列表框时,始终禁用"全选"上下文菜单(并且从不调用SelectAll_CanExecute),直到我选择了某些内容.有没有什么方法可以让它像它应该的那样工作?(并且无需自动选择第一项或让用户必须这样做)

谢谢!

wpf listbox contextmenu commandbinding

5
推荐指数
1
解决办法
923
查看次数

如何获取字体样式列表 (wpf)

fontdialog 从哪里获得它的字体样式列表?

FontStyles 仅包含 Normal、Oblique 和 Italic。然而,通过各种字体的字体样式,有以下组合:中、轻、半、粗、罗马、窄、重、条件……等等。

Arial 的字体对话框显示:

窄斜体、斜体、常规、窄粗体、窄粗斜体、粗体、粗斜体、黑色、黑色斜体

他们从哪里得到这个名单?其中一些名字似乎没有出现在任何地方。是否有一些具有其他指定名称或其他名称的 FamilyTypeface 粗细、样式和拉伸组合列表?

谢谢你的帮助!

wpf font-family

3
推荐指数
1
解决办法
3094
查看次数

标签 统计

wpf ×2

commandbinding ×1

contextmenu ×1

font-family ×1

listbox ×1