小编Ben*_*ale的帖子

C#:如何在虚拟模式下有效过滤(隐藏)ListView 项目?

C#:如何在虚拟模式下有效过滤(隐藏)ListView 项目?

我正在寻找一种在虚拟模式下过滤(隐藏/显示)ListView 中的项目的方法。我将我的项目缓存在列表视图项目数组中,如何有效地使其在按下过滤按钮时仅显示特定的列表视图项目,然后在按下非过滤按钮时将所有项目返回?

.net c# wpf listview

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

如何更改wxPython工具栏的外观?

wxPython ToolBar外观与当前操作系统的外观不匹配 - 它具有类似于Windows Vista/7菜单栏IE的渐变色渐变色.

有没有办法改变它,以便它与操作系统的外观和感觉融为一体?

注意:创建ToolBar时可以设置样式标志,其中一个标志是wx.TB_FLAT,但这似乎对ToolBar的渲染方式没有影响.

我在Windows 7上运行我的wxPython程序.

编辑:下面是我看到的屏幕截图.

替代文字

编辑:似乎工具栏是根据当前主题绘制的,因为更改为Windows经典主题会呈现与窗口背景匹配的平面工具栏.

下面的代码显示了我到目前为止所尝试的内容.我创建了一个名为OnPaint的方法,它绑定到工具栏绘制事件.这没有任何效果,工具栏如上图所示绘制.

我知道,如果我将此方法绑定到Windows绘制事件而不是工具栏,则OnPaint中的代码将作为矩形呈现.

import wx

ID_STAT = 1
ID_TOOL = 2

class CheckMenuItem(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(350, 250))

        menubar = wx.MenuBar()
        file = wx.Menu()
        view = wx.Menu()
        self.shst = view.Append(ID_STAT, 'Show statubar', 'Show Statusbar', kind=wx.ITEM_CHECK)
        self.shtl = view.Append(ID_TOOL, 'Show toolbar', 'Show Toolbar', kind=wx.ITEM_CHECK)
        view.Check(ID_STAT, True)
        view.Check(ID_TOOL, True)

        self.Bind(wx.EVT_MENU, self.ToggleStatusBar, id=ID_STAT)
        self.Bind(wx.EVT_MENU, self.ToggleToolBar, id=ID_TOOL)

        menubar.Append(file, '&File')
        menubar.Append(view, '&View')
        self.SetMenuBar(menubar)

        self.toolbar = self.CreateToolBar()
        self.toolbar.Realize()

        self.statusbar = …
Run Code Online (Sandbox Code Playgroud)

python wxpython

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

如何向WPF TabControl添加额外内容?

我有一个自定义ControlTemplate用于WPF TabControl,它在TabItem标题的左侧和右侧添加了按钮.目前这不是命名部分,因为按钮命令绑定在ControlTemplates XAML中,不需要在ControlTemplate之外公开.

这适用于按钮,但如果我想将内容添加到TabItemHeaders的左侧(或右侧),可以绑定到ControlTemplate之外,以便我的TabControl变得更灵活,该怎么办?

我的想法是继承TabControl并在ControlTemplate中有两个命名部分,并将它们作为新控件的属性公开; CustomTabControl.LeftContentAreaCustomTabControl.RightContentArea分别.每个命名的部分都是一个ContentPresenter,每个ContentPresenters Content属性都由上面提到的属性公开.

但是,当我尝试这个时,我无法将内容放入左右内容区域.

编辑:为了清楚我已经包含了一个图像.红色矩形显示我希望能够放置额外内容的位置.

替代文字

更新:下面是我到目前为止取得的进展的屏幕截图,希望这将有助于解释我的问题.

屏幕截图显示了我的自定义选项卡控件,其中有两个空白选项卡和三个当前位于TabItem标题区域右侧的按钮.这些按钮当前在TabControls自定义ControlTemplate IE中定义,ControlTemplates Grid中有一个ColumnDefinition,它包含一个托管3个按钮的StackPanel.

替代文字

我正在寻找的是一种允许选项卡控件的消费者决定选项卡旁边区域内容的内容的方法.EG用户应该能够做到这样的事情:

<local:CustomTabControl>
    <local:CustomTabControl.RightContentArea>
        <!-- This can be changed to ANY content that the user wants -->
        <StackPanel Orientation="Horizontal">
            <Button Content="Test" />
            <Button Content="Test" />
            <Button Content="Test" />
        </StackPanel>
    </local:CustomTabControl.RightContentArea>

    <!-- TabItems are added as normal -->
    <TabItem Header="Tab One" />
    <TabItem Header="Tab Two" />

</local:CustomTabControl>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml wpf-controls

5
推荐指数
2
解决办法
8184
查看次数

使用拆分器使ItemsControl子级可以调整大小

我想将小部件插入到我的内容中ItemsControl并使它们可以调整大小.我该如何实现这一目标?

这是我的XAML:

<ItemsControl ItemsSource="{Binding TestForList, Mode=OneWay}">

    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal"                
                        VerticalAlignment="Stretch"                
                        HorizontalAlignment="Stretch" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border Margin="5" 
                    BorderThickness="1" 
                    BorderBrush="Black">
                <TextBlock FontSize="100" Text="{Binding}" />    
            </Border>                    
        </DataTemplate>
    </ItemsControl.ItemTemplate>

</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

哪个绑定到:

public List<string> TestForList
{
    get
    {
        return new List<string> { "A", "B", "C" };
    }
}
Run Code Online (Sandbox Code Playgroud)

我想以某种方式在项目之间添加分割器,以便可以调整它们的大小.有没有内置的功能来实现这一目标?

在此输入图像描述

c# wpf layout xaml

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

使用ID或操作名称的ASP.NET MVC路由

我有一个ASP.Net应用程序,它有一个名为'Customers'的区域.该区域有一个名称相同的控制器,只有一个名为Index的方法.

我定义了以下路线:

context.MapRoute(null,
    "Customers/{controller}/{action}",
    new { controller = "customers", action = "Index" }
);
Run Code Online (Sandbox Code Playgroud)

这允许我导航以使用以下URL导航到我的Customers控制器上的索引方法.

MYDOMAIN /客户

在我的客户区域,我还有另一个叫做产品的控制器.这有许多方法可以让我使用产品实体(目前主要由Visual Studio自动生成).

使用我当前的路线,我可以使用以下URL链接到产品控制器:

MyDomain/Customers/Products(显示产品控制器的索引页面)MyDomain/Customers/Products/Create(显示添加新产品的页面).MyDomain/Customers/Products/Details?id = 1234(显示ID为1234的产品)

现在我想要做的是导航到详细信息页面,其中包含更加用户友好的URL,例如:

MYDOMAIN /客户/产品/ 1234

我已经定义了一个如下所示的新路由:

context.MapRoute(null,
    "Customers/Products/{id}",
    new { controller = "Products", action = "Details" }
    );
Run Code Online (Sandbox Code Playgroud)

路线我演示的第一条路线之前定义.这允许我根据需要导航到产品页面,但是我无法再导航到我的产品控制器上的其他方法.

EG以下URL

MYDOMAIN /客户/产品/创建

给我以下错误:

参数字典包含方法'System.Web.Mvc.ViewResult Details(Int32)'的非可空类型'System.Int32'的参数'id'的空条目

如果我更改路由的顺序,那么我可以导航到我的产品控制器上的所有方法,但我的详细信息URL将恢复为具有查询参数的旧格式.

如果我更新路线看起来像这样:

context.MapRoute(null,
    "Customers/Products/{id}",
    new { controller = "Products", action = "Details", id = UrlParameter.Optional }
    );
Run Code Online (Sandbox Code Playgroud)

然后我仍然遇到同样的问题.

谁能告诉我如何构建我的路线以获得我想要的结果?综上所述:

  1. 如果我导航到客户区域,我希望我的网址看起来像'MyDomain/Customers'
  2. 如果我导航到产品详细信息页面,我希望我的URL看起来像"MyDomain/Customers/Products/1234".
  3. 如果我导航到任何其他产品页面,我希望我的网址看起来像'MyDomain/Customers/Products/Create'

c# asp.net-mvc asp.net-mvc-routing

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

如何正确使用列表框itemtemplate/datatemplate中的按钮?

我有一个Silverlight应用程序,显示一个项目列表ListBox.每个项目代表我的应用程序的不同"页面",所以我有一个应用于ItemContainerStyle属性的样式,如下所示:

<Style x:Key="navigationItemContainerStyle" TargetType="ListBoxItem">
    <Setter Property="Margin" Value="5,3"/>
    <Setter Property="FontSize" Value="16"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <Grid Cursor="Hand">
                    <VisualStateManager.VisualStateGroups>
                        <!-- code omitted --!> 
                    </VisualStateManager.VisualStateGroups>
                    <Border x:Name="contentBorder"
                            Background="{StaticResource navigationHighlightBrush}" 
                            CornerRadius="3"
                            Opacity="0"/>
                    <ContentControl x:Name="content"
                                    Margin="10,5"
                                    Content="{Binding}" 
                                    Foreground="DarkGray"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

风格很简单.它仅仅是显示BorderListBoxItem的视觉状态等于'选定’.请注意,内容由a托管,ContentControl因为我希望能够Foreground在项目处于"已选择"状态时更改属性.

这可以很好地工作,如下面的屏幕截图所示:

在此输入图像描述

现在我希望所选项目调用导航,所以我的想法是创建一个DataTemplate将每个项目的内容设置为HyperLinkButton:

<DataTemplate x:Key="navigationListBoxItemTemplate">
    <HyperlinkButton Content="{Binding}" 
                     Background="Transparent"/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

现在这不能作为ItemTemplate主机的内容ContentControl而不是一样,ContentPresenter所以我必须更新ListBoxItem模板才能使用ContentPresenter.

<ContentPresenter x:Name="content" Margin="10,5"/>
Run Code Online (Sandbox Code Playgroud)

我现在得到以下结果:

在此输入图像描述

当我在点击HyperLinkButton …

c# silverlight styles datatemplate

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

使用 CSS 在 tabpane 中居中选项卡

我试图在 JavaFX 中将选项卡居中,TabPane但似乎无法达到预期的结果。

使用 CSS 参考,我能够定位TabPane控件子结构的各个部分,但无论我尝试什么,我都无法将选项卡水平居中放置在标题中。

到目前为止,我拥有的 CSS 如下:

.tab-pane > .tab-header-area > .headers-region {
    -fx-border-color: red;
    -fx-border-width: 3;

    -fx-alignment: CENTER;
}

.tab-pane > .tab-header-area > .tab-header-background {
    -fx-border-color: blue;
    -fx-border-width: 3;
}
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果:

在此处输入图片说明

如您所见,彩色边框表明我正确选择了 的子结构,TabPane但该-fx-alignment属性似乎没有效果。

是否可以使用 CSS 在标题中水平居中选项卡,如果可以,我需要设置哪个属性以及我需要定位子结构的哪个部分?

java javafx javafx-8

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

Nim 返回包含 proc 的自定义元组

我正在尝试创建一个 proc 返回一个自定义元组,其中包含一个 proc 类型的单个元素,即

type
  CustomTuple = tuple
    foo: proc(input: int): int

proc createCustomTuple(): CustomTuple =
  (foo: proc(input: int): int = 10)
Run Code Online (Sandbox Code Playgroud)

但是,当我编译它时,我收到以下错误(我在 Windows 上使用 Nim 1.2.6 版进行编译)。

错误:类型不匹配:得到 <tuple[foo: proc (input: int): int{.noSideEffect, gcsafe, locks: 0.}]> 但预期为 'CustomTuple = tuple[foo: proc (input: int): int{ 。关闭。}]'

所以编译器认为我返回的是一个普通的元组而不是一个,CustomTuple但我不知道如何改变它以使其工作。Nim 手册中元组的文档显示自定义元组是按照我的方式构造的,我找不到任何从 proc 返回自定义元组的示例。

如果我更改我的CustomTuple定义以包含不是 procs 的类型,那么它会成功编译,因此它似乎可以执行我的自定义元组,其中包含导致无法编译的 proc。

谁能解释为什么上面的代码没有编译?

tuples nim-lang

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

Haskell 使用元组定义多个函数

我刚刚遇到了一些看起来像这样的 Haskell 代码:

(functionOne, functionTwo)
  | someCondition = (10, "Ten")
  | otherwise     = (20, "Twenty")
Run Code Online (Sandbox Code Playgroud)

从代码的使用方式来看,我我理解这段代码的意图,即它只是一种更简洁的写法:

functionOne
  | someCondition = 10
  | otherwise     = 20

functionTwo
  | someCondition = "Ten"
  | otherwise     = "Twenty"
Run Code Online (Sandbox Code Playgroud)

但是,我不记得以前见过以这种方式编写的函数,也不知道这种技术被称为什么,因此无法搜索有关此的任何其他信息。

所以我的问题是:

  • 我对这里发生的事情的理解是否正确?
  • 这种技术有名字吗?

haskell tuples

5
推荐指数
0
解决办法
86
查看次数

" - (void)"在此函数声明中的含义是什么?` - (无效)awakeFromNib`

为什么每当我必须使用awakeFromNib协议时,我必须将它放在这种格式中?

-(void)awakeFromNib
Run Code Online (Sandbox Code Playgroud)

有什么需要 - (无效)?

xcode objective-c

4
推荐指数
2
解决办法
2万
查看次数