小编Jul*_*ien的帖子

构建不同类型的相关项的集合

public class Base : ICustomItem
{
}

public class Book : Base
{
    public List<Author> Authors;
    public List<Bookmark> Bookmarks;
}

public class Author : Base
{
}

public class Bookmark : Base
{
}

public ObservableCollection(ICustomItem) MyItems;

public ListCollectionView MyItemsView { get; } = new ListCollectionView(MyItems);
Run Code Online (Sandbox Code Playgroud)

通过这样的设置,我可以显示包含书籍,作者和书签的单一列表.我可以深入研究一本书,并查看具体的书籍作者和书签.

问题#1:我想深入了解作者,并查看所有作者的书籍.最重要的是,我希望看到该作者所有书籍的所有书签.

一个简单的解决方案是为每个其他类添加适当的列表.例如. public List<Book> BooksAuthor类.然而,这种失控的,当你开始增加更多的类别(例如Genre,Publisher,Language等)

问题2:我还希望能够按照任何选定标记的编号对列表进行排序,包括任何相关的标记类型:

MyItemsView.SortDescriptions.Add(new SortDescription("Bookmarks.Count", Descending);

作者拥有的书签数量应该是所有书籍的所有书签的总和.

构建此类数据的好方法是什么,以便不必为每种类型维护多个查找集合?使用Book作为真理的来源不是一个好方法?理想情况下,我可以按任何标签类型排序.

在我的实际应用中,我已经解决了问题#1:当深入研究例如.一Author,我发现所有的BookMyItems与匹配的作者,然后把所有的Genre,Publisher等从图书列表拉.通过这种方式,我可以根据书籍提供的标签显示作者拥有的所有标签.(我在列表视图模型的范围内执行此操作,因为我知道我正在深入研究哪些项目并且可以访问主 …

c# data-binding wpf mvvm

6
推荐指数
1
解决办法
410
查看次数

通过反射在基类中查找私有方法

如何通过名称找到我的方法“button_Click”?如果我公开它,它会起作用,但我宁愿将其私有化。

class Test : BaseTest
{
    public Test()
    {
        LoadMethod();
    }
}

class BaseTest
{
    public void LoadMethod()
    {
        //WHY IS THIS NULL???
        var eventMethod = GetType().GetMethod("button_Click", BindingFlags.NonPublic | BindingFlags.Instance);
    }

    void button_Click(object sender, EventArgs e) { }
}
Run Code Online (Sandbox Code Playgroud)

c# reflection

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

跨文本跨流程文档中的列

我正在将即时消息传递应用聊天界面重新设计为流程文档。这是我要复制的设计。

http://imgur.com/5LAz1Tv

到目前为止,这是我使用XamlPad尝试过的。我的主要问题是对齐和/或列跨度。编辑:顶部的最新尝试

<TabControl Width="500">

    <TabItem Header="Julien Rosen">

        <FlowDocument>

            <Table>

                <Table.Columns>

                    <TableColumn Width="60" />
                    <TableColumn />
                    <TableColumn Width="100" />

                </Table.Columns>

                <TableRowGroup>

                    <TableRow>

                        <TableCell RowSpan="2">
                            <Paragraph>
                                <Image Source="c:\logo.png" Height="35" />
                                <LineBreak />
                                <Image Margin="0,5,5,0" Source="c:\file.png" Height="10" />
                                <Image Source="c:\flag-green.png" Height="10" />
                            </Paragraph>
                        </TableCell>

                    </TableRow>

                    <TableRow>

                        <TableCell>

                            <Paragraph FontStyle="Italic" FontSize="12">
                                <TextBox BorderThickness="0" IsReadOnly="False" Background="Transparent" IsEnabled="False">
                                    Julien Rosen:
                                </TextBox>
                                <TextBox BorderThickness="0" IsReadOnly="False" Background="Transparent" IsEnabled="False">
                                    03/01/2013 14:17
                                </TextBox>      
                            </Paragraph>

                            <Paragraph Margin="0,10,0,0" FontSize="12">
                                This is a new attempt using rows differently
                            </Paragraph>

                        </TableCell>

                    </TableRow>

                </TableRowGroup> …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

4
推荐指数
1
解决办法
1690
查看次数

在文本框中处理Shift-Enter事件

我想要一个文本框,用户可以在其中切换 - 输入或按住ctrl-enter添加换行符而不提交.我发现以下关于如何进行ctrl-enter的帖子

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/67ef5912-aaf7-43cc-bfb0-88acdc37f09c

效果很好!所以我添加了自己的块以捕获shift输入,如下所示:

  else if (((keyData & swf.Keys.Shift) == swf.Keys.Shift) && ((keyData & swf.Keys.Enter) == swf.Keys.Enter) && Keyboard.FocusedElement == txtMessage)
  {
     // SHIFT ENTER PRESSED!
  }
Run Code Online (Sandbox Code Playgroud)

除了现在该框正在捕获其他移位组合,例如问号和波浪形大括号,然后添加换行符.我需要更改什么来防止这种情况发生?

c# wpf

3
推荐指数
2
解决办法
7046
查看次数

以线程安全的方式创建新窗口

我使用signalR将消息推送到服务器并向下推送到特定客户端.

当我发送消息时,接收客户端从我的signalR服务器发送一个ReceiveMessage函数调用,该函数映射到我的应用程序中的静态类函数.然后静态类尝试执行new Chat()(我的消息传递窗口类)以在接收端打开消息窗口.

这引发了 calling thread must be STA, because many UI components require this.

我之前曾与代表合作过简单的表单元素(比如更改文本框),但我不明白如何在这种情况下应用它.当我读到Invoke它时,会在某种形式的对象上调用它,这在我的情况下是不存在的?

TLDR; 如何从静态类函数调用创建和显示表单的新实例

c# wpf signalr

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

ListBoxItem ContextMenu仅在选中ListBox多个项目时

如果没有选择或只选择一个项目,如何禁用listboxitem上下文菜单?

ListBox有一个SelectedItems属性,但它是只读的,你不能绑定它.

<ListBox ItemsSource="{Binding Items}" SelectionMode="Extended">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu>
                        <MenuItem Header="GOGO" />
                    </ContextMenu>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.ItemContainerStyle>
    <ListBox.ItemTemplate>
        <DataTemplate>
                <TextBlock Text="{Binding}" HorizontalAlignment="Center" VerticalAlignment="Center" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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

标签 统计

c# ×6

wpf ×5

xaml ×2

data-binding ×1

mvvm ×1

reflection ×1

signalr ×1